| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import 'package:flutter/material.dart';
- import 'token_service.dart';
- import '../models/user_model.dart';
-
- /// 认证状态管理
- class AuthProvider extends ChangeNotifier {
- final TokenService _tokenService = TokenService();
-
- bool _isLoading = false;
- bool _isAuthenticated = false;
- UserModel? _currentUser;
- String? _errorMessage;
-
- bool get isLoading => _isLoading;
- bool get isAuthenticated => _isAuthenticated;
- UserModel? get currentUser => _currentUser;
- String? get errorMessage => _errorMessage;
-
- /// 初始化认证状态
- Future<void> init() async {
- _isAuthenticated = await _tokenService.isLoggedIn();
- if (_isAuthenticated) {
- // TODO: 从接口获取用户信息
- _currentUser = UserModel(
- id: '1',
- username: 'admin',
- name: '管理员',
- role: 'admin',
- );
- }
- notifyListeners();
- }
-
- /// 登录
- Future<bool> login({
- required String username,
- required String password,
- }) async {
- _isLoading = true;
- _errorMessage = null;
- notifyListeners();
-
- try {
- // TODO: 调用实际登录接口
- // final response = await DioClient().post('/auth/login', data: {
- // 'username': username,
- // 'password': password,
- // });
-
- // 模拟登录成功
- await _tokenService.saveTokens(
- token: 'mock_access_token_${DateTime.now().millisecondsSinceEpoch}',
- refreshToken: 'mock_refresh_token',
- expiresIn: 7200,
- );
-
- _currentUser = UserModel(
- id: '1',
- username: username,
- name: username == 'admin' ? '管理员' : username,
- role: 'admin',
- );
- _isAuthenticated = true;
- _isLoading = false;
- notifyListeners();
- return true;
- } catch (e) {
- _errorMessage = '登录失败,请检查用户名和密码';
- _isLoading = false;
- notifyListeners();
- return false;
- }
- }
-
- /// 登出
- Future<void> logout() async {
- await _tokenService.clearTokens();
- _isAuthenticated = false;
- _currentUser = null;
- notifyListeners();
- }
- }
|