123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- //
- // ApplicationModel.m
- // FirstLink
- //
- // Created by unicode on 14-9-28.
- // Copyright (c) 2014年 FirstLink. All rights reserved.
- //
- #import "FKUserManager.h"
- #import "UserDefaultManager.h"
- #import <UICKeyChainStore.h>
- @interface FKUserManager ()
- @property (nonatomic, strong) User* user;
- @property (nonatomic, strong) UICKeyChainStore *keychain;
- @end
- @implementation FKUserManager
- + (FKUserManager *)sharedManager {
- static FKUserManager *sharedUserManagerInstance = nil;
-
- static dispatch_once_t once_token;
- dispatch_once(&once_token, ^{
- sharedUserManagerInstance = [[self alloc] init];
- });
-
- return sharedUserManagerInstance;
- }
- - (instancetype)init {
- self = [super init];
- if (self) {
- _keychain = [UICKeyChainStore keyChainStoreWithService:@"com.firstlink.duoshoubang.mobile"];
- }
- return self;
- }
- #pragma mark - User
- + (NSString*)userArchivePath {
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
- NSString *homePath = [paths objectAtIndex:0];
- return [homePath stringByAppendingPathComponent:@"user.archive"];
- }
- - (User*)unarchiveUser {
- User *user = [NSKeyedUnarchiver unarchiveObjectWithFile:[FKUserManager userArchivePath]];
- return user;
- }
- - (User*)user {
- if (_user != nil) {
- return _user;
- } else {
- // 为兼容归档文件向kechain迁移
- NSFileManager *manager = [NSFileManager defaultManager];
- if ([manager fileExistsAtPath:[FKUserManager userArchivePath]]) {
- _user = [[FKUserManager sharedManager] unarchiveUser];
- [manager removeItemAtPath:[FKUserManager userArchivePath] error:nil];
-
- [self saveUser:_user];
- } else {
- _user = [[User alloc] init];
- _user.isNew = self.keychain[kIsNew];
- _user.headurl = self.keychain[kHeadURL];
- _user.mobile = self.keychain[kMobile];
- _user.nickName = self.keychain[kNickName];
- _user.status = self.keychain[kStatus];
- _user.level = self.keychain[kLevel];
- _user.token = self.keychain[kToken];
- _user.userID = self.keychain[kUserID];
- _user.introduce = self.keychain[kIntroduce];
-
- NSString *type = self.keychain[kLoginType];
- if (type.length == 0) {
- _user.lastLoginType = UserLoginTypeMobile;
- } else {
- _user.lastLoginType = (UserLoginType)[type intValue];
- }
- }
- }
- return _user;
- }
- - (BOOL)saveUser:(User *)user {
- _user = [user mutableCopy];
-
- self.keychain[kIsNew] = _user.isNew;
- self.keychain[kHeadURL] = _user.headurl;
- self.keychain[kMobile] = _user.mobile;
- self.keychain[kNickName] = _user.nickName;
- self.keychain[kStatus] = _user.status;
- self.keychain[kLevel] = _user.level;
- self.keychain[kToken] = _user.token;
- self.keychain[kUserID] = _user.userID;
- self.keychain[kIntroduce] = _user.introduce;
- self.keychain[kLoginType] = [NSString stringWithFormat:@"%@", @(_user.lastLoginType)];
-
- return TRUE;
- }
- - (BOOL)clearUser {
- _user = nil;
-
- self.keychain[kIsNew] = nil;
- self.keychain[kHeadURL] = nil;
- self.keychain[kMobile] = nil;
- self.keychain[kNickName] = nil;
- self.keychain[kStatus] = nil;
- self.keychain[kLevel] = nil;
- self.keychain[kToken] = nil;
- self.keychain[kUserID] = nil;
- self.keychain[kIntroduce] = nil;
- self.keychain[kLoginType] = nil;
-
- NSFileManager *manager = [NSFileManager defaultManager];
- if ([manager fileExistsAtPath:[FKUserManager userArchivePath]]) {
- [manager removeItemAtPath:[FKUserManager userArchivePath] error:nil];
- }
-
- return TRUE;
- }
- + (BOOL)isUserLogin {
- User *user = [FKUserManager sharedManager].user;
- if (user == nil || user.token == nil) {
- return FALSE;
- }
- return TRUE;
- }
- - (ApplicationMode)applicationMode {
- if ([FKUserManager isUserLogin]) {
- return ApplicationModeLogin;
- }
- return ApplicationModeVisitor;
- }
- - (BOOL)localLogout {
- User *user = [[User alloc] init];
- user.mobile = self.user.mobile;
- user.nickName = self.user.nickName;
- user.headurl = self.user.headurl;
- user.lastLoginType = self.user.lastLoginType;
-
- [self saveUser:user];
-
- [SystemUtil asyncRequestUserAuthority];
-
- return NO;
- }
- + (void)remoteLogout:(void (^)(MSGHeader *, id))success
- failure:(void (^)(MSGHeader *, NSError *))failure {
- NSString *URLString = [NSString stringWithFormat:@"%@/link-site/api/user/logout.json?d_id=%@&umtk=%@",
- [[FKServerUtil sharedInstance] apiServer],
- [FLStringHelper replaceNilWithEmpty:[SystemUtil getIdentifierForVendor]],
- [[UserDefaultManager sharedManager] getUserDefaultObject:REMOTE_NOTIFICATION_TOKEN]
- ];
-
- FLDataCenter *dataCenter = [FLDataCenter sharedDataCenter];
- [dataCenter POST:URLString parameters:[FLRequestHelper commonParamater]
- success:^(MSGHeader *header, id responseObject) {
- if ([header.code intValue] == RESPONSE_MSG_NORMAL) {
- success(header, responseObject);
- } else {
- success(header, responseObject);
- }
- } failure:^(MSGHeader *header, NSError *error) {
- failure(header, error);
- }];
- }
- @end
|