Files
2026-04-07 18:20:16 +08:00

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