|
|
@@ -6,17 +6,18 @@
|
|
|
//
|
|
|
|
|
|
#import "LoginStateManager.h"
|
|
|
-
|
|
|
-#import "GLoginController.h"
|
|
|
-
|
|
|
#import "UserNetApi.h"
|
|
|
-
|
|
|
-
|
|
|
#import "UDManager.h"
|
|
|
#import "APPLocker.h"
|
|
|
#import "GWebSocket.h"
|
|
|
+#import "GDBManager.h"
|
|
|
|
|
|
@implementation LoginStateManager
|
|
|
+{
|
|
|
+ BOOL _loggedIn;
|
|
|
+ NSString *_currentUserToken;
|
|
|
+ NSString *_currentUserID;
|
|
|
+}
|
|
|
+ (instancetype)sharedManager {
|
|
|
static LoginStateManager *instance = nil;
|
|
|
static dispatch_once_t onceToken;
|
|
|
@@ -30,118 +31,91 @@
|
|
|
- (instancetype)init {
|
|
|
self = [super init];
|
|
|
if (self) {
|
|
|
- // 初始化时自动加载存储的登录状态
|
|
|
- _loggedIn = NO;
|
|
|
+ _currentUserToken = [UDManager.shareInstance getSDManager:gkeytoken] ?: @"";
|
|
|
+ _currentUserID = [UDManager.shareInstance getSDManager:dkuserId] ?: @"";;
|
|
|
+ _loggedIn = _currentUserToken.length && _currentUserID.length;
|
|
|
}
|
|
|
return self;
|
|
|
}
|
|
|
|
|
|
-#pragma mark - 登录登出方法
|
|
|
+- (BOOL)isLoggedIn {
|
|
|
+ return _loggedIn;
|
|
|
+}
|
|
|
+
|
|
|
+- (NSString *)currentUserToken {
|
|
|
+ return _currentUserToken;
|
|
|
+}
|
|
|
|
|
|
-- (void)loginWithAccountInfo:(NSDictionary *)info{
|
|
|
- NSLog(@"version:%@",info[@"version"]);
|
|
|
- [UserNetApi login:info succ:^(int code, NSDictionary * res) {
|
|
|
- NSLog(@"%@",res);
|
|
|
- NSString *codes = res[@"code"];
|
|
|
- if(codes.intValue!=200){
|
|
|
-// [AppAlter showAlertWithContent:res[@"msg"] cancelTitle:@"取消" cancelBlock:nil];
|
|
|
-// [AlertHelper showAlertWithTitle:@"" message:res[@"msg"] cancelButtonTitle:NSLocalizedString(@"Common_cancel", @"") confirmButtonTitle:nil completion:nil];
|
|
|
+- (NSString *)currentUserID {
|
|
|
+ return _currentUserID;
|
|
|
+}
|
|
|
+
|
|
|
+- (void)requestUserInfoWith:(void(^)(BOOL isSuccess))completion {
|
|
|
+ [UserNetApi getUserinfo:^(int code, NSDictionary * res) {
|
|
|
+ //NSLog(@"%@", res[@"code"]);
|
|
|
+ NSNumber *gcode=res[@"code"];
|
|
|
+ NSDictionary *data=res[@"data"];
|
|
|
+ // NSLog(@"%@", data);
|
|
|
+ if([gcode intValue]!=200){
|
|
|
+ NSLog(@"%@",res[@"msg"]);
|
|
|
+ [self postLogout];
|
|
|
+ if (completion) {
|
|
|
+ completion(NO);
|
|
|
+ }
|
|
|
return;
|
|
|
}
|
|
|
- NSString *token =res[@"token"];
|
|
|
- if(token){
|
|
|
- [UDManager.shareInstance setSDManager:res[@"token"] key:gkeytoken];
|
|
|
- [UDManager.shareInstance setSDManager:info[@"username"] key:dkuserloginId];
|
|
|
- [self getUserInfo];
|
|
|
+ NSDictionary *ps = @{@"avatar": data[@"avatar"]?:@"",
|
|
|
+ @"deptId": data[@"deptId"]?:@"",
|
|
|
+ @"email":data[@"email"]?:@"",
|
|
|
+ @"id":data[@"id"]?:@"",
|
|
|
+ @"mobile":data[@"mobile"]?:@"",
|
|
|
+ @"name":data[@"name"]?:@"",
|
|
|
+ @"sex":data[@"sex"]?:@"",
|
|
|
+ @"username":data[@"username"]?:@"",
|
|
|
+ };
|
|
|
+
|
|
|
+ self->_loggedIn = YES;
|
|
|
+ [UDManager.shareInstance setDDManager:ps key:dkuserinfo];
|
|
|
+ [UDManager.shareInstance setSDManager:ps[@"id"] key:dkuserId];
|
|
|
+
|
|
|
+ if (completion) {
|
|
|
+ completion(YES);
|
|
|
}
|
|
|
} fail:^(NSError * _Nonnull error) {
|
|
|
- NSLog(@"--%@",error);
|
|
|
+ NSLog(@"%@", error);
|
|
|
+ if (completion) {
|
|
|
+ completion(NO);
|
|
|
+ }
|
|
|
}];
|
|
|
}
|
|
|
|
|
|
-- (void)getUserInfo{
|
|
|
- NSString *token = [UDManager.shareInstance getSDManager:gkeytoken];
|
|
|
- NSLog(@"getUserinfo:%@",token);
|
|
|
- if([token isKindOfClass:[NSString class]]&&token.length>10){
|
|
|
- [UserNetApi getUserinfo:^(int code, NSDictionary * res) {
|
|
|
- //NSLog(@"%@", res[@"code"]);
|
|
|
- NSNumber *gcode=res[@"code"];
|
|
|
- NSDictionary *data=res[@"data"];
|
|
|
- // NSLog(@"%@", data);
|
|
|
- if([gcode intValue]!=200){
|
|
|
- NSLog(@"%@",res[@"msg"]);
|
|
|
- [self clearLoginStatus];
|
|
|
- return;
|
|
|
- }
|
|
|
- NSDictionary *ps = @{@"avatar": data[@"avatar"]?:@"",
|
|
|
- @"deptId": data[@"deptId"]?:@"",
|
|
|
- //@"domainId":data[@"domainId"],
|
|
|
- @"email":data[@"email"]?:@"",
|
|
|
- @"id":data[@"id"]?:@"",
|
|
|
- @"mobile":data[@"mobile"]?:@"",
|
|
|
- @"name":data[@"name"]?:@"",
|
|
|
- //@"platformType":data[@"platformType"]?:@"",
|
|
|
- //@"registrationId":data[@"registrationId"]?:@"",
|
|
|
- @"sex":data[@"sex"]?:@"",
|
|
|
- //@"tgbotAdmin":data[@"tgbotAdmin"],
|
|
|
- //@"tgbotName":data[@"tgbotName"],
|
|
|
- //@"tgbotTk":data[@"tgbotTk"]?:@"",
|
|
|
- @"username":data[@"username"]?:@"",
|
|
|
- //@"uuid":data[@"uuid"],
|
|
|
- //@"voipTk":data[@"voipTk"]?:@""
|
|
|
- };
|
|
|
- if(code==200){
|
|
|
- self->_loggedIn = YES;
|
|
|
- [UDManager.shareInstance setDDManager:ps key:dkuserinfo];
|
|
|
- [UDManager.shareInstance setSDManager:ps[@"id"] key:dkuserId];
|
|
|
- !self.checkLoginState ?: self.checkLoginState(YES);
|
|
|
- }
|
|
|
- } fail:^(NSError * _Nonnull error) {
|
|
|
- NSLog(@"%@", error);
|
|
|
-// self->_loggedIn = NO;
|
|
|
-// [self clearLoginStatus];
|
|
|
-// !self.checkLoginState ?: self.checkLoginState(NO);
|
|
|
- }];
|
|
|
- }
|
|
|
- else{
|
|
|
- self->_loggedIn = NO;
|
|
|
- [self clearLoginStatus];
|
|
|
- [self showLoginViewController];
|
|
|
-// !self.checkLoginState ?: self.checkLoginState(NO);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
- (void)logout {
|
|
|
// 这里应该是实际的登出网络请求
|
|
|
[UserNetApi logout:nil succ:^(int code, NSDictionary * res) {
|
|
|
- [self logoutSet];
|
|
|
-// [self showLoginViewController];
|
|
|
+
|
|
|
} fail:^(NSError * _Nonnull error) {
|
|
|
NSLog(@"");
|
|
|
}];
|
|
|
+ [self postLogout];
|
|
|
+}
|
|
|
+
|
|
|
+- (void)postLogout {
|
|
|
+ [[NSNotificationCenter defaultCenter] postNotificationName: nkonLogoutSucc object:nil];
|
|
|
}
|
|
|
|
|
|
-- (void)logoutSet{
|
|
|
+- (void)cleanLoginState{
|
|
|
+ _currentUserToken = @"";
|
|
|
+ _currentUserID = @"";
|
|
|
[[GWebSocket shareInstance] closeWebSocket];
|
|
|
[UDManager.shareInstance removeUDManager:gkeytoken];
|
|
|
[UDManager.shareInstance removeUDManager:dkuserloginId];
|
|
|
[UDManager.shareInstance removeUDManager:dkuserinfo];
|
|
|
+ [UDManager.shareInstance removeUDManager:dkuserId];
|
|
|
[APPLocker.sharedLocker removePasswordWithError:nil];
|
|
|
- [self clearLoginStatus];
|
|
|
+ [self clearVOIP];
|
|
|
self->_loggedIn = NO;
|
|
|
}
|
|
|
|
|
|
-#pragma mark - 辅助方法
|
|
|
-
|
|
|
-- (BOOL)checkLoginStatus {
|
|
|
- if (!self.isLoggedIn) {
|
|
|
- // 这里可以弹出登录界面
|
|
|
- [self showLoginViewController];
|
|
|
- return NO;
|
|
|
- }
|
|
|
- return YES;
|
|
|
-}
|
|
|
-
|
|
|
#pragma mark - 本地存储管理
|
|
|
|
|
|
- (void)saveLoginStatusToStorage {
|
|
|
@@ -152,10 +126,8 @@
|
|
|
|
|
|
}
|
|
|
|
|
|
-- (void)clearLoginStatus {
|
|
|
- [UDManager.shareInstance removeUDManager:gkeytoken];
|
|
|
+- (void)clearVOIP {
|
|
|
NSString *voiptoken = [UDManager.shareInstance getSDManager:dkvoiptoken];
|
|
|
- [self showLoginViewController];
|
|
|
NSLog(@"voiptoken:%@",voiptoken);
|
|
|
if([voiptoken isKindOfClass:[NSString class]]&&voiptoken.length>10){
|
|
|
NSDictionary *dic = @{
|
|
|
@@ -182,15 +154,4 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-#pragma mark - 私有方法
|
|
|
-
|
|
|
-- (void)showLoginViewController {
|
|
|
- // 这里实现弹出登录界面的逻辑
|
|
|
- NSLog(@"需要显示登录界面");
|
|
|
- UIStoryboard *board = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
|
|
|
- GLoginController *login = [board instantiateViewControllerWithIdentifier:@"LoginController"];
|
|
|
- UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:login];
|
|
|
- [UIApplication sharedApplication].delegate.window.rootViewController = nav;
|
|
|
-}
|
|
|
-
|
|
|
@end
|