TCLoginParam.m 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. //
  2. // TCLoginParam.m
  3. // TCLVBIMDemo
  4. //
  5. // Created by dackli on 16/8/4.
  6. // Copyright © 2016年 tencent. All rights reserved.
  7. //
  8. #import "TCLoginParam.h"
  9. #import "TCUtil.h"
  10. #import "TCConstants.h"
  11. @implementation TCLoginParam
  12. #define kLoginParamKey @"kLoginParamKey"
  13. + (instancetype)shareInstance
  14. {
  15. static TCLoginParam *mgr;
  16. static dispatch_once_t onceToken;
  17. dispatch_once(&onceToken, ^{
  18. if (mgr == nil) {
  19. mgr = [[TCLoginParam alloc] init];
  20. }
  21. });
  22. return mgr;
  23. }
  24. - (instancetype)init
  25. {
  26. self = [super init];
  27. if (self) {
  28. [self loadFromLocal];
  29. }
  30. return self;
  31. }
  32. - (void)loadFromLocal {
  33. NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:APP_GROUP];
  34. if (defaults == nil) {
  35. defaults = [NSUserDefaults standardUserDefaults];
  36. }
  37. NSString *useridKey = [defaults objectForKey:kLoginParamKey];
  38. if (useridKey) {
  39. NSString *strLoginParam = [defaults objectForKey:useridKey];
  40. NSDictionary *dic = [TCUtil jsonData2Dictionary: strLoginParam];
  41. if (dic) {
  42. self.token = [dic objectForKey:@"token"];
  43. self.tokenTime = [[dic objectForKey:@"tokenTime"] longValue];
  44. self.expires = [[dic objectForKey:@"expires"] longValue];
  45. self.identifier = [dic objectForKey:@"identifier"];
  46. self.hashedPwd = [dic objectForKey:@"hashedPwd"];
  47. self.isLastAppExt = [[dic objectForKey:@"isLastAppExt"] intValue];
  48. } else {
  49. self.token = nil;
  50. self.tokenTime = 0;
  51. self.expires = 0;
  52. self.identifier = nil;
  53. self.hashedPwd = nil;
  54. self.isLastAppExt = 0;
  55. }
  56. }
  57. }
  58. - (void)saveToLocal {
  59. if (![self isValid]) {
  60. return;
  61. }
  62. self.tokenTime = [[NSDate date] timeIntervalSince1970];
  63. NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
  64. [dic setObject:self.token forKey:@"token"];
  65. [dic setObject:@(self.tokenTime) forKey:@"tokenTime"];
  66. [dic setObject:@(self.expires) forKey:@"expires"];
  67. [dic setObject:self.identifier forKey:@"identifier"];
  68. [dic setObject:self.hashedPwd forKey:@"hashedPwd"];
  69. #if APP_EXT
  70. [dic setObject:@(1) forKey:@"isLastAppExt"];
  71. #else
  72. [dic setObject:@(0) forKey:@"isLastAppExt"];
  73. #endif
  74. NSData *data = [TCUtil dictionary2JsonData: dic];
  75. NSString *strLoginParam = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
  76. NSString *useridKey = [NSString stringWithFormat:@"%@_LoginParam", self.identifier];
  77. NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:APP_GROUP];
  78. if (defaults == nil) {
  79. defaults = [NSUserDefaults standardUserDefaults];
  80. }
  81. [defaults setObject:useridKey forKey:kLoginParamKey];
  82. // save login param
  83. [defaults setObject:strLoginParam forKey:useridKey];
  84. [defaults synchronize];
  85. }
  86. - (void)clearLocal{
  87. NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:APP_GROUP];
  88. if (defaults == nil) {
  89. defaults = [NSUserDefaults standardUserDefaults];
  90. }
  91. NSString *useridKey = [defaults objectForKey:kLoginParamKey];
  92. if(useridKey != nil){
  93. [defaults removeObjectForKey:useridKey];
  94. [defaults synchronize];
  95. }
  96. [self loadFromLocal];
  97. }
  98. + (NSString *)storedUserID {
  99. NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:APP_GROUP];
  100. if (defaults == nil) {
  101. defaults = [NSUserDefaults standardUserDefaults];
  102. }
  103. NSString *useridKey = [defaults objectForKey:kLoginParamKey];
  104. if(useridKey == nil){
  105. return nil;
  106. }
  107. return [defaults objectForKey:useridKey];
  108. }
  109. - (BOOL)isExpired {
  110. NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:APP_GROUP];
  111. if (defaults == nil) {
  112. defaults = [NSUserDefaults standardUserDefaults];
  113. }
  114. NSString *useridKey = [defaults objectForKey:kLoginParamKey];
  115. if(useridKey != nil){
  116. NSObject *obj = [defaults objectForKey:useridKey];
  117. if (obj == nil) {
  118. return YES;
  119. }
  120. }
  121. time_t curTime = [[NSDate date] timeIntervalSince1970];
  122. if (curTime - self.tokenTime > self.expires) {
  123. return YES;
  124. }
  125. return NO;
  126. }
  127. - (NSDate *)expireDate {
  128. if ([TCLoginParam storedUserID] == nil) {
  129. return nil;
  130. }
  131. return [NSDate dateWithTimeIntervalSince1970: self.tokenTime + self.expires];
  132. }
  133. - (BOOL)isValid {
  134. if (self.identifier == nil || self.identifier.length == 0) {
  135. return NO;
  136. }
  137. if (self.hashedPwd == nil || self.hashedPwd.length == 0) {
  138. return NO;
  139. }
  140. return YES;
  141. }
  142. @end