Parcourir la source

- 패스워드를 저장하지 않고 자동 로그인 되도록 수

KaRam Kim il y a 8 ans
Parent
commit
4f39370cfa

+ 1 - 1
OneCable/Classes/Categories/NSString-Addtions.m

@@ -12,7 +12,7 @@
 @implementation NSString (Additions)
 
 - (BOOL)isEmptyString {
-    if([self isEqualToString:@"<null>"] || [self isEqualToString:@"null"] || self == (id)[NSNull null] || [[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] isEqualToString:@""]) {
+    if(self == nil || [self isEqualToString:@"<null>"] || [self isEqualToString:@"null"] || [self isEqualToString:@"(null)"] || self == (id)[NSNull null] || [[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] isEqualToString:@""]) {
         return YES;
     }
 

+ 2 - 1
OneCable/Classes/Definitions.h

@@ -107,7 +107,7 @@ static NSString *kWebLinkServer = @"http://61.40.220.23:7794";      //운영
 #define API_POST_HOMEGROUP_MEMBER_INVITATIONS   @"/homegrp_members/invitations" //홈그룹 초대 수락/거절
 
 //20 - dashboard
-#define API_GET_DASHBOARD                   @"/customer/%@/group/%@/device/node"       //대시보드
+#define API_GET_DASHBOARD                   @"/customer/%@/group/%@/device/node"       //노드 목록 조회
 #define API_GET_DASHBOARD_MODE_LIST         @"/modes"                   //대시보드 모드 조회
 #define API_POST_DASHBOARD_MODE_CHANGE      @"/modes/%@/current_mode"   //대시보드 모드 변경
 #define API_GET_MODE_STATUS                 @"/modes/%@/status"         //홈모드 변경 결과 조회
@@ -277,6 +277,7 @@ typedef enum MorePopupBtnType {
 #define USDEF_SESSION_LOGIN_PWD     @"KneetSessionLoginPwd"
 
 
+
 //Constants
 #define ksKneetRulesDisable     @"X"
 

+ 67 - 36
OneCable/Classes/ViewControllers/MainScreens/LoginViewController.m

@@ -55,7 +55,6 @@ ID / PW Input Box Text Color
 - (void)viewDidLoad {
     [super viewDidLoad];
     // Do any additional setup after loading the view.
-
     [self initUI];
     [self prepareViewDidLoad];
 }
@@ -126,11 +125,11 @@ ID / PW Input Box Text Color
     _chkAutoLogin.checked = [[[JDFacade facade] objectForKeyFromUserDefaults:USDEF_APP_AUTO_LOGIN] boolValue];
     _chkIdSave.checked = [[[JDFacade facade] objectForKeyFromUserDefaults:USDEF_APP_SAVE_ID] boolValue];
     if (_chkAutoLogin.checked) {
-//        [self requestAutoLogin];
-        _txtEmail.text = [[JDFacade facade] objectForKeyFromKeychain:USDEF_SESSION_LOGIN_ID];
-        _txtPasswd.text = [[JDFacade facade] objectForKeyFromKeychain:USDEF_SESSION_LOGIN_PWD];
-        
-        [self btnLogInTouched:_btnLogin];
+        [self requestAutoLogin];
+//        _txtEmail.text = [[JDFacade facade] objectForKeyFromKeychain:USDEF_SESSION_LOGIN_ID];
+//        _txtPasswd.text = [[JDFacade facade] objectForKeyFromKeychain:USDEF_SESSION_LOGIN_PWD];
+//        
+//        [self btnLogInTouched:_btnLogin];
     }
     
     if (_chkIdSave.checked) {
@@ -182,39 +181,50 @@ ID / PW Input Box Text Color
 - (void)requestAutoLogin {;
 
     //parameters
-    NSString *authToken = [[JDFacade facade] objectForKeyFromKeychain:USDEF_SESSION_AUTOTOKEN];
+//    NSString *memberId = [[JDFacade facade] objectForKeyFromKeychain:USDEF_SESSION_LOGIN_ID];
+//    NSString *authToken = [[JDFacade facade] objectForKeyFromKeychain:USDEF_SESSION_AUTOTOKEN];
+    
+    LoginModel *tmpInfo = [[LoginModel alloc] init];
+    tmpInfo.memberId = [[JDFacade facade] objectForKeyFromKeychain:USDEF_SESSION_LOGIN_ID];
+    tmpInfo.authToken = [[JDFacade facade] objectForKeyFromKeychain:USDEF_SESSION_AUTOTOKEN];
     
-    [RequestHandler handler].authorization = authToken;
-    NSLog(@"%s\n %@", __PRETTY_FUNCTION__, authToken);
+//    if ([authToken isEmptyString]) {
+//        return;
+//    }
+//   NSLog(@"%@", authToken);
+//    [RequestHandler handler].authorization = authToken;
 
-    NSDictionary *parameter = @{@"device_sn": [JDFacade facade].deviceUUID,
+
+    NSDictionary *parameter = @{@"Authorization": tmpInfo.authorization,
                                 @"device_token": [JDFacade facade].APNSToken ? [JDFacade facade].APNSToken : ksEmptyString,
                                 @"os_type": MOBILE_DEVICE_TYPE,
-                                @"device_hostname": [JDFacade facade].deviceHostName ? [JDFacade facade].deviceHostName : ksEmptyString};
+                                @"message_type": @"auth.auto"};
     
+    [self sendDataToSocket:parameter];
+    [[JDFacade facade] loadIndicator:YES allowUserInteraction:NO];
 
-    NSString *path = [NSString stringWithFormat:API_GET_SIGN_IN_AUTO];
-
-    [[RequestHandler handler] sendAsyncGetRequestAPIPath:path parameters:parameter modelClass:[LoginModel class] completion:^(id responseObject) {
-        if (!responseObject) {//응답결과가 잘못되었거나 없을 경우,
-            return;
-        }
-
-        LoginModel *loginInfo = (LoginModel *)responseObject;
-
-        if (loginInfo) {//API 성공 ,함
-            [self actionForLoginSucceed:loginInfo];
-
-        }
-    } failure:^(id errorObject) {
-        JDErrorModel *error = (JDErrorModel *)errorObject;
-
-        if ([error.errorCode isEqualToString:API_RESPONSE_UNAUTHORIZED_DEVICE]) {//새로운 단말 인증 필요
-            [self actionForNeedsRegisteringNewDevice:error.nickname];
-        } else {
-            [[JDFacade facade] alert:error.errorMessage];
-        }
-    }];
+//    NSString *path = [NSString stringWithFormat:API_GET_SIGN_IN_AUTO];
+//
+//    [[RequestHandler handler] sendAsyncGetRequestAPIPath:path parameters:parameter modelClass:[LoginModel class] completion:^(id responseObject) {
+//        if (!responseObject) {//응답결과가 잘못되었거나 없을 경우,
+//            return;
+//        }
+//
+//        LoginModel *loginInfo = (LoginModel *)responseObject;
+//
+//        if (loginInfo) {//API 성공 ,함
+//            [self actionForLoginSucceed:loginInfo];
+//
+//        }
+//    } failure:^(id errorObject) {
+//        JDErrorModel *error = (JDErrorModel *)errorObject;
+//
+//        if ([error.errorCode isEqualToString:API_RESPONSE_UNAUTHORIZED_DEVICE]) {//새로운 단말 인증 필요
+//            [self actionForNeedsRegisteringNewDevice:error.nickname];
+//        } else {
+//            [[JDFacade facade] alert:error.errorMessage];
+//        }
+//    }];
 }
 
 //인증 메일 재요청
@@ -237,6 +247,7 @@ ID / PW Input Box Text Color
     } failure:^(id errorObject) {
         JDErrorModel *error = (JDErrorModel *)errorObject;
         [[JDFacade facade] alert:error.errorMessage];
+        
     }];
 }
 
@@ -265,8 +276,8 @@ ID / PW Input Box Text Color
         [[JDFacade facade] storeObjectToUserDefaults:@(_chkAutoLogin.checked) forKey:USDEF_APP_AUTO_LOGIN];
         [[JDFacade facade] storeObjectToUserDefaults:@(_chkIdSave.checked) forKey:USDEF_APP_SAVE_ID];
         if (_chkAutoLogin.checked) {//자동로그인 설정 시, 인증 토큰 저장
-            [[JDFacade facade] storeObjectToKeychain:[_txtEmail.text trim] forKey:USDEF_SESSION_LOGIN_ID];
-            [[JDFacade facade] storeObjectToKeychain:[_txtPasswd.text trim] forKey:USDEF_SESSION_LOGIN_PWD];
+            [[JDFacade facade] storeObjectToKeychain:loginInfo.memberId forKey:USDEF_SESSION_LOGIN_ID];
+            [[JDFacade facade] storeObjectToKeychain:loginInfo.authToken forKey:USDEF_SESSION_AUTOTOKEN];
         } else {
             [[JDFacade facade] removeObjectAtKeychain:USDEF_SESSION_AUTOTOKEN];
             [[JDFacade facade] removeObjectAtKeychain:USDEF_SESSION_LOGIN_PWD];
@@ -375,7 +386,7 @@ ID / PW Input Box Text Color
 
     //자동 로그인 설정 - 취소
     [[JDFacade facade] storeObjectToUserDefaults:@(NO) forKey:USDEF_APP_AUTO_LOGIN];
-    [[JDFacade facade] removeObjectAtKeychain:USDEF_SESSION_LOGIN_PWD];
+    [[JDFacade facade] removeObjectAtKeychain:USDEF_SESSION_AUTOTOKEN];
     if (![[[JDFacade facade] objectForKeyFromUserDefaults:USDEF_APP_SAVE_ID] boolValue]) {
         [[JDFacade facade] removeObjectAtKeychain:USDEF_SESSION_LOGIN_ID];
     }
@@ -464,6 +475,7 @@ ID / PW Input Box Text Color
     NSLog(@"Result Info : %@", result);
     SWITCH(result.messageType)
     {
+        
         CASE (@"auth")
         {
             [[JDFacade facade] loadIndicator:NO allowUserInteraction:YES];
@@ -481,6 +493,25 @@ ID / PW Input Box Text Color
             
             break;
         }
+        CASE (@"auth.auto")
+        {
+            [[JDFacade facade] loadIndicator:NO allowUserInteraction:YES];
+            if (result.isSuccess) {
+                LoginModel *loginInfo = [[LoginModel alloc] initWithDictionary:info error:nil];;
+                if (loginInfo) {//API 성공 ,함
+                    loginInfo.memberId = [[JDFacade facade] objectForKeyFromKeychain:USDEF_SESSION_LOGIN_ID];
+                    loginInfo.authToken = [[JDFacade facade] objectForKeyFromKeychain:USDEF_SESSION_AUTOTOKEN];
+                    [self actionForLoginSucceed:loginInfo];
+                    
+                }
+            }
+            else
+            {
+                [[JDFacade facade] toast:result.resultMsg];
+            }
+            
+            break;
+        }
         CASE(@"auth.out")
         {
             if (result.isSuccess) {

+ 1 - 1
OneCable/Classes/ViewControllers/ThingsScreens/ThingsViewController.m

@@ -522,7 +522,7 @@
         NSLog(@"Is Requesting : %@", BOOLToString(device.isRequesting));
         
         // TODO : 어떤 부분인지 내용 확인 필요
-        cell.pcontainerView.hidden = !device.isRequesting;
+//        cell.pcontainerView.hidden = !device.isRequesting;
 //        if (!cell.pcontainerView.hidden) {
 //            [cell startProgressAni];
 //        } else {