76 lines
2.2 KiB
Objective-C
76 lines
2.2 KiB
Objective-C
//
|
|
// AVUserManager.m
|
|
// AVDemo
|
|
//
|
|
|
|
#import "AVUserManager.h"
|
|
#import "AVApiService.h"
|
|
|
|
static NSString * const kUserLoggedInKey = @"AVUserLoggedIn";
|
|
static NSString * const kUserUsernameKey = @"AVUserUsername";
|
|
|
|
@implementation AVUserManager
|
|
|
|
+ (instancetype)sharedManager {
|
|
static AVUserManager *instance = nil;
|
|
static dispatch_once_t onceToken;
|
|
dispatch_once(&onceToken, ^{
|
|
instance = [[self alloc] init];
|
|
});
|
|
return instance;
|
|
}
|
|
|
|
- (instancetype)init {
|
|
self = [super init];
|
|
if (self) {
|
|
_isLoggedIn = [[NSUserDefaults standardUserDefaults] boolForKey:kUserLoggedInKey];
|
|
_currentUsername = [[NSUserDefaults standardUserDefaults] stringForKey:kUserUsernameKey];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (void)loginWithUsername:(NSString *)username
|
|
password:(NSString *)password
|
|
completion:(void (^)(BOOL success, NSString * _Nullable errorMessage))completion {
|
|
if (username.length == 0) {
|
|
if (completion) completion(NO, @"用户名不能为空");
|
|
return;
|
|
}
|
|
if (password.length == 0) {
|
|
if (completion) completion(NO, @"密码不能为空");
|
|
return;
|
|
}
|
|
|
|
[[AVApiService shared] loginWithUsername:username password:password
|
|
success:^(id responseObject) {
|
|
[self saveLoginStateWithUsername:username];
|
|
if (completion) completion(YES, nil);
|
|
}
|
|
failure:^(NSError *error, NSString *serverMessage) {
|
|
NSString *msg = serverMessage ?: [NSString stringWithFormat:@"网络请求失败: %@", error.localizedDescription];
|
|
if (completion) completion(NO, msg);
|
|
}];
|
|
}
|
|
|
|
- (void)saveLoginStateWithUsername:(NSString *)username {
|
|
_isLoggedIn = YES;
|
|
_currentUsername = username;
|
|
|
|
// 持久化保存
|
|
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:kUserLoggedInKey];
|
|
[[NSUserDefaults standardUserDefaults] setObject:username forKey:kUserUsernameKey];
|
|
[[NSUserDefaults standardUserDefaults] synchronize];
|
|
}
|
|
|
|
- (void)logout {
|
|
_isLoggedIn = NO;
|
|
|
|
// 清除持久化数据
|
|
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:kUserLoggedInKey];
|
|
[[NSUserDefaults standardUserDefaults] synchronize];
|
|
|
|
NSLog(@"✅ 用户已登出");
|
|
}
|
|
|
|
@end
|