LoginStateManager.m 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. //
  2. // LoginStateManager.m
  3. // AIIM
  4. //
  5. // Created by qitewei on 2025/6/15.
  6. //
  7. #import "LoginStateManager.h"
  8. #import "UserNetApi.h"
  9. #import "UDManager.h"
  10. #import "APPLocker.h"
  11. #import "GWebSocket.h"
  12. #import "GDBManager.h"
  13. @implementation LoginStateManager
  14. {
  15. BOOL _loggedIn;
  16. NSString *_currentUserToken;
  17. NSString *_currentUserID;
  18. }
  19. + (instancetype)sharedManager {
  20. static LoginStateManager *instance = nil;
  21. static dispatch_once_t onceToken;
  22. dispatch_once(&onceToken, ^{
  23. instance = [[LoginStateManager alloc] init];
  24. [instance loadLoginStatusFromStorage];
  25. });
  26. return instance;
  27. }
  28. - (instancetype)init {
  29. self = [super init];
  30. if (self) {
  31. _currentUserToken = [UDManager.shareInstance getSDManager:gkeytoken] ?: @"";
  32. _currentUserID = [UDManager.shareInstance getSDManager:dkuserId] ?: @"";;
  33. _loggedIn = _currentUserToken.length && _currentUserID.length;
  34. }
  35. return self;
  36. }
  37. - (BOOL)isLoggedIn {
  38. return _loggedIn;
  39. }
  40. - (NSString *)currentUserToken {
  41. return _currentUserToken;
  42. }
  43. - (NSString *)currentUserID {
  44. return _currentUserID;
  45. }
  46. - (void)requestUserInfoWith:(void(^)(BOOL isSuccess))completion {
  47. [UserNetApi getUserinfo:^(int code, NSDictionary * res) {
  48. //NSLog(@"%@", res[@"code"]);
  49. NSNumber *gcode=res[@"code"];
  50. NSDictionary *data=res[@"data"];
  51. // NSLog(@"%@", data);
  52. if([gcode intValue]!=200){
  53. NSLog(@"%@",res[@"msg"]);
  54. [self postLogout];
  55. if (completion) {
  56. completion(NO);
  57. }
  58. return;
  59. }
  60. NSDictionary *ps = @{@"avatar": data[@"avatar"]?:@"",
  61. @"deptId": data[@"deptId"]?:@"",
  62. @"email":data[@"email"]?:@"",
  63. @"id":data[@"id"]?:@"",
  64. @"mobile":data[@"mobile"]?:@"",
  65. @"name":data[@"name"]?:@"",
  66. @"sex":data[@"sex"]?:@"",
  67. @"username":data[@"username"]?:@"",
  68. };
  69. self->_loggedIn = YES;
  70. [UDManager.shareInstance setDDManager:ps key:dkuserinfo];
  71. [UDManager.shareInstance setSDManager:ps[@"id"] key:dkuserId];
  72. if (completion) {
  73. completion(YES);
  74. }
  75. } fail:^(NSError * _Nonnull error) {
  76. NSLog(@"%@", error);
  77. if (completion) {
  78. completion(NO);
  79. }
  80. }];
  81. }
  82. - (void)logout {
  83. // 这里应该是实际的登出网络请求
  84. [UserNetApi logout:nil succ:^(int code, NSDictionary * res) {
  85. } fail:^(NSError * _Nonnull error) {
  86. NSLog(@"");
  87. }];
  88. [self postLogout];
  89. }
  90. - (void)postLogout {
  91. [[NSNotificationCenter defaultCenter] postNotificationName: nkonLogoutSucc object:nil];
  92. }
  93. - (void)cleanLoginState{
  94. _currentUserToken = @"";
  95. _currentUserID = @"";
  96. [[GWebSocket shareInstance] closeWebSocket];
  97. [UDManager.shareInstance removeUDManager:gkeytoken];
  98. [UDManager.shareInstance removeUDManager:dkuserloginId];
  99. [UDManager.shareInstance removeUDManager:dkuserinfo];
  100. [UDManager.shareInstance removeUDManager:dkuserId];
  101. [APPLocker.sharedLocker removePasswordWithError:nil];
  102. [self clearVOIP];
  103. self->_loggedIn = NO;
  104. }
  105. #pragma mark - 本地存储管理
  106. - (void)saveLoginStatusToStorage {
  107. }
  108. - (void)loadLoginStatusFromStorage {
  109. }
  110. - (void)clearVOIP {
  111. NSString *voiptoken = [UDManager.shareInstance getSDManager:dkvoiptoken];
  112. NSLog(@"voiptoken:%@",voiptoken);
  113. if([voiptoken isKindOfClass:[NSString class]]&&voiptoken.length>10){
  114. NSDictionary *dic = @{
  115. @"voipTk":voiptoken
  116. };
  117. [UserNetApi clearVoipTk:dic succ:^(int code, NSDictionary * res) {
  118. NSLog(@"clearVoipTk:%@",res);
  119. } fail:^(NSError * _Nonnull error) {
  120. }];
  121. }
  122. NSString *pushtoken = [UDManager.shareInstance getSDManager:dkpushtoken];
  123. NSLog(@"voiptoken:%@",pushtoken);
  124. if([pushtoken isKindOfClass:[NSString class]]&&pushtoken.length>10){
  125. NSDictionary *dic = @{
  126. @"registrationId":pushtoken
  127. };
  128. [UserNetApi clearRegistrationId:dic succ:^(int code, NSDictionary * res) {
  129. NSLog(@"clearRegistrationId:%@",res);
  130. } fail:^(NSError * _Nonnull error) {
  131. }];
  132. }
  133. }
  134. @end