From 4a5012461d13e6ec5a7c9fba59270acc6f83a6bb Mon Sep 17 00:00:00 2001 From: Simon Ding Date: Tue, 16 Jul 2024 21:51:57 +0800 Subject: [PATCH] fix: login --- ui/lib/providers/APIs.dart | 32 ++++++++++++++++++++++++++------ ui/lib/providers/login.dart | 11 +---------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/ui/lib/providers/APIs.dart b/ui/lib/providers/APIs.dart index 44347a2..8bc9f3b 100644 --- a/ui/lib/providers/APIs.dart +++ b/ui/lib/providers/APIs.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:quiver/strings.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import 'package:ui/providers/server_response.dart'; class APIs { static final _baseUrl = baseUrl(); @@ -49,17 +50,21 @@ class APIs { if (dio1 != null) { return dio1!; } - final SharedPreferences prefs = await SharedPreferences.getInstance(); - var token = prefs.getString("token"); - if (isNotBlank(token)) { - authHeaders["Authorization"] = "Bearer $token"; - isLoggedIn = true; + var token = authHeaders["token"]; + if (isBlank(token)) { + final SharedPreferences prefs = await SharedPreferences.getInstance(); + var t = prefs.getString("token"); + if (isNotBlank(t)) { + authHeaders["Authorization"] = t!; + isLoggedIn = true; + token = t; + } } var dio = Dio(); dio.interceptors.add(InterceptorsWrapper( onRequest: (options, handler) { - options.headers['Authorization'] = "Bearer $token"; + options.headers['Authorization'] = token; return handler.next(options); }, onError: (error, handler) { @@ -76,4 +81,19 @@ class APIs { dio1 = dio; return dio; } + + static Future login(String user, String password) async { + var resp = await Dio() + .post(APIs.loginUrl, data: {"user": user, "password": password}); + + var sp = ServerResponse.fromJson(resp.data); + + if (sp.code != 0) { + throw sp.message; + } + final SharedPreferences prefs = await SharedPreferences.getInstance(); + var t = sp.data["token"]; + authHeaders["token"] = "Bearer $t"; + prefs.setString("token", "Bearer $t"); + } } diff --git a/ui/lib/providers/login.dart b/ui/lib/providers/login.dart index 3e0530b..74c420e 100644 --- a/ui/lib/providers/login.dart +++ b/ui/lib/providers/login.dart @@ -36,16 +36,7 @@ class AuthSettingData extends AutoDisposeAsyncNotifier { } Future login(String user, String password) async { - var resp = await Dio() - .post(APIs.loginUrl, data: {"user": user, "password": password}); - - var sp = ServerResponse.fromJson(resp.data); - - if (sp.code != 0) { - throw sp.message; - } - final SharedPreferences prefs = await SharedPreferences.getInstance(); - prefs.setString("token", sp.data["token"]); + return APIs.login(user, password); } }