| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- import '../datasources/local/shared_prefs.dart';
- import '../models/user.dart';
- import '../models/auth/login_request.dart';
- import '../models/auth/register_request.dart';
- import '../models/api_response.dart';
-
- class AuthRepository {
- final SharedPrefs localDataSource;
-
- AuthRepository({required this.localDataSource});
-
- // 模拟登录
- Future<ApiResponse<User>> login(LoginRequest request) async {
- await Future.delayed(const Duration(seconds: 1));
-
- // 模拟成功登录
- if (request.email == 'test@example.com' && request.password == '123456') {
- final user = User(
- id: '1',
- email: request.email,
- name: '测试用户',
- avatarUrl: 'https://ui-avatars.com/api/?name=测试用户',
- phone: '13800138000',
- createdAt: DateTime.now(),
- );
-
- // 保存token和用户数据
- await localDataSource.setAuthToken('mock_jwt_token_${user.id}');
- await localDataSource.setUserData(user.toJson().toString());
-
- return ApiResponse<User>(
- success: true,
- message: '登录成功',
- data: user,
- );
- } else {
- return ApiResponse<User>(
- success: false,
- message: '邮箱或密码错误',
- );
- }
- }
-
- // 模拟注册
- Future<ApiResponse<User>> register(RegisterRequest request) async {
- await Future.delayed(const Duration(seconds: 1));
-
- final user = User(
- id: DateTime.now().millisecondsSinceEpoch.toString(),
- email: request.email,
- name: request.name,
- phone: request.phone,
- createdAt: DateTime.now(),
- );
-
- // 保存token和用户数据
- await localDataSource.setAuthToken('mock_jwt_token_${user.id}');
- await localDataSource.setUserData(user.toJson().toString());
-
- return ApiResponse<User>(
- success: true,
- message: '注册成功',
- data: user,
- );
- }
-
- // 检查登录状态
- Future<bool> isLoggedIn() async {
- final token = localDataSource.getAuthToken();
- return token != null && token.isNotEmpty;
- }
-
- // 获取当前用户
- Future<User?> getCurrentUser() async {
- final userData = localDataSource.getUserData();
- if (userData != null) {
- try {
- // 这里简单处理,实际应该解析JSON
- return User(
- id: '1',
- email: 'test@example.com',
- name: '测试用户',
- );
- } catch (e) {
- return null;
- }
- }
- return null;
- }
-
- // 注销
- Future<bool> logout() async {
- await localDataSource.removeAuthToken();
- await localDataSource.removeUserData();
- return true;
- }
- }
|