Explorar o código

- 자동 로그인 관련 작업

KaRam Kim %!s(int64=8) %!d(string=hai) anos
pai
achega
115af2eb41

+ 3 - 1
OneCable/Base.lproj/Localizable.strings

@@ -245,7 +245,9 @@
 /* 실행할 때를 선택하세요 */
 "실행할 때를 선택하세요" = "실행할 때를 선택하세요";
 /* 자동로그인 */
-"자동로그인" = "자동로그인";
+"로그인 유지" = "로그인 유지";
+/* 자동로그인 */
+"아이디 저장" = "아이디 저장";
 /* 아이디/비번찾기 */
 "아이디/비번찾기" = "아이디/비번찾기";
 /* 새로고침 */

+ 4 - 0
OneCable/Classes/Categories/NSString-Addtions.h

@@ -28,4 +28,8 @@
 
 - (NSString *)base64Enc;
 
+- (NSString *)trim;
+
+- (NSString *)trimSpaceAndEnter;
+
 @end

+ 10 - 2
OneCable/Classes/Categories/NSString-Addtions.m

@@ -216,12 +216,20 @@
 }
 
 
-- (NSString *)base64Enc
-{
+- (NSString *)base64Enc {
     NSData *plainData = [self dataUsingEncoding:NSUTF8StringEncoding];
     NSString *base64enc = [plainData base64EncodedStringWithOptions:0];
     
     return base64enc;
 }
 
+- (NSString *)trim {
+    return [self stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];
+}
+
+- (NSString *)trimSpaceAndEnter {
+    return [self stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
+}
+
+
 @end

+ 5 - 0
OneCable/Classes/Common.h

@@ -44,6 +44,8 @@
 #define IS_IPHONE_6 CGSizeEqualToSize([UIScreen mainScreen].bounds.size, CGSizeMake(375, 667.0f)) || CGSizeEqualToSize([UIScreen mainScreen].bounds.size, CGSizeMake(667.0f, 375))
 #define IS_IPHONE_6P CGSizeEqualToSize([UIScreen mainScreen].bounds.size, CGSizeMake(414, 736.0f)) || CGSizeEqualToSize([UIScreen mainScreen].bounds.size, CGSizeMake(736.0f, 414))
 
+#define BOOLToString(b) ((b) ? @"YES" : @"NO")
+
 #define USERDEFAULT [NSUserDefaults standardUserDefaults]
 #define SharedApplication [UIApplication sharedApplication]
 #define Bundle [NSBundle mainBundle]
@@ -77,6 +79,9 @@
 
 #define getCenter(v) CGPointMake(v.center.x-ViewX(v), v.center.y-ViewY(v))
 
+#define SizeToStr(v) NSStringFromCGSize(v)
+#define FrameToStr(v) NSStringFromCGRect(v)
+
 
 
 

+ 4 - 0
OneCable/Classes/Definitions.h

@@ -253,6 +253,7 @@ typedef enum MorePopupBtnType {
 //UserDefaults - for app
 #define USDEF_APP_APPINIT       @"KneetAppInit"
 #define USDEF_APP_AUTO_LOGIN    @"KneetAppAutoLogin"
+#define USDEF_APP_SAVE_ID       @"KneetAppSaveID"
 
 #define USDEF_APP_USERID_LIST   @"KneetAppUserIdList"
 //#define USER_DEF_MOBILE_ID      @"KneetMobileDeviceId"
@@ -271,6 +272,9 @@ typedef enum MorePopupBtnType {
 #define USDEF_SESSION_NOTICE_READ_DATE  @"KneetSessionNoticeReadDatetime"
 #define USDEF_SESSION_PUSH_READ_DATE  @"KneetPushNoticeReadDatetime"
 
+#define USDEF_SESSION_LOGIN_ID      @"KneetSessionLoginId"
+#define USDEF_SESSION_LOGIN_PWD     @"KneetSessionLoginPwd"
+
 
 //Constants
 #define ksKneetRulesDisable     @"X"

+ 4 - 4
OneCable/Classes/Handler/RequestHandler.m

@@ -110,10 +110,10 @@
     }
     
     // !!!: Authorization정보가 있을 경우 모든 Request Header정보에 Authorization정보를 포함해서 요청하도록 수정
-    if([[JDFacade facade].loginUser authorization]!=nil)
-    {
-        [request setValue:[[JDFacade facade].loginUser authorization] forHTTPHeaderField:@"Authorization"];
-    }
+//    if([[JDFacade facade].loginUser authorization]!=nil)
+//    {
+//        [request setValue:[[JDFacade facade].loginUser authorization] forHTTPHeaderField:@"Authorization"];
+//    }
     NSLog(@"All Header Info : %@", request.allHTTPHeaderFields);
 
     AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];

+ 1 - 0
OneCable/Classes/JDFacade.h

@@ -90,6 +90,7 @@ extern CGRect gKeyboardRect;
 - (void)storeObjectToUserDefaults:(id)object forKey:(NSString *)aKey;
 - (id)objectForKeyFromUserDefaults:(NSString *)aKey;
 
+
 //loading
 - (void)loadIndicator:(BOOL)showIndicator allowUserInteraction:(BOOL)allowUserInteracton;
 - (void)loadIndicatorWhileExecutingBlock:(dispatch_block_t)block;

+ 3 - 1
OneCable/Classes/JDFacade.m

@@ -197,7 +197,7 @@
 
 #pragma mark - KeychainItem Wrapper 
 
-static NSString *const ksKeychainIdentifier = @"KNEET2ACCOUNT";
+static NSString *const ksKeychainIdentifier = @"OneCableACCOUNT";
 static NSString *const ksKeychainArchiveData = @"_archiveData";
 
 - (void)storeObjectToKeychain:(id)object forKey:(NSString *)aKey {
@@ -267,6 +267,8 @@ static NSString *const ksKeychainArchiveData = @"_archiveData";
 }
 
 
+
+
 #pragma mark - Alert & Loading
 - (void)loadIndicator:(BOOL)showIndicator allowUserInteraction:(BOOL)allowUserInteracton {
     

+ 2 - 0
OneCable/Classes/Util/JDUserDefaults.h

@@ -15,6 +15,8 @@
 - (id)objectForKey:(id)aKey;
 - (void)setObject:(id)object forKey:(id<NSCopying>)aKey;
 
+- (void)removeObject:(id<NSCopying>)aKey;
+
 - (void)setInteger:(NSInteger)value forKey:(id<NSCopying>)aKey;
 - (NSInteger)integerForKey:(id)aKey;
 

+ 8 - 0
OneCable/Classes/Util/JDUserDefaults.m

@@ -36,6 +36,14 @@
     [_userData setObject:object forKey:aKey];
 }
 
+- (void)removeObject:(id<NSCopying>)aKey {
+    if (aKey == nil) {
+        return;
+    }
+    
+    [_userData removeObjectForKey:aKey];
+}
+
 - (id)objectForKey:(id)aKey {
     id object = [_userData objectForKey:aKey];
 

+ 38 - 10
OneCable/Classes/ViewControllers/MainScreens/LoginViewController.m

@@ -84,7 +84,9 @@
     _txtPasswd.delegate = self;
     
     //Localization
-    [_chkAutoLogin setTitle:NSLocalizedString(@"자동로그인", @"자동로그인") forState:UIControlStateNormal];
+    [_chkAutoLogin setTitle:NSLocalizedString(@"로그인 유지", @"로그인 유지") forState:UIControlStateNormal];
+    [_chkIdSave setTitle:NSLocalizedString(@"아이디 저장", @"아이디 저장") forState:UIControlStateNormal];
+    
     _txtEmail.placeholder = NSLocalizedString(@"아이디", @"아이디");
     _txtPasswd.placeholder = NSLocalizedString(@"비밀번호", @"비밀번호");
     
@@ -108,20 +110,30 @@
     [RequestHandler handler].authorization = nil;
 
     _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];
+//        [self requestAutoLogin];
+        _txtEmail.text = [[JDFacade facade] objectForKeyFromUserDefaults:USDEF_SESSION_LOGIN_ID];
+        _txtPasswd.text = [[JDFacade facade] objectForKeyFromUserDefaults:USDEF_SESSION_LOGIN_PWD];
+        
+        [self btnLogInTouched:_btnLogin];
+    }
+    
+    if (_chkIdSave.checked) {
+        _txtEmail.text = [[JDFacade facade] objectForKeyFromUserDefaults:USDEF_SESSION_LOGIN_ID];
     }
+        
 }
 
 #pragma mark - Main Logic
 
 - (void)requestLogin {
-    NSDictionary *param = @{@"member_id": _txtEmail.text,
-                            @"password": _txtPasswd.text,
+    NSDictionary *param = @{@"member_id": [_txtEmail.text trim],
+                            @"password": [_txtPasswd.text trim],
                             @"os_type": MOBILE_DEVICE_TYPE,
                             @"device_token": [JDFacade facade].APNSToken ? [JDFacade facade].APNSToken : ksEmptyString,
                             @"message_type": @"auth"};
-    
+
     [self sendDataToSocket:param];
     
 //    [[RequestHandler handler] sendAsyncPostRequestAPIPath:API_POST_SIGN_IN parameters:param modelClass:[LoginModel class] completion:^(id responseObject) {
@@ -232,14 +244,30 @@
             [JDFacade facade].loginUser.newEmailId = ksEmptyString;
         }
 
-        [RequestHandler handler].authorization = loginInfo.authToken;
-
+        [RequestHandler handler].authorization = loginInfo.authorization;
+// TODO : 자동로그인 / 아이디 저장 관련 작업하기
         if (_chkAutoLogin.checked) {//자동로그인 설정 시, 인증 토큰 저장
             [[JDFacade facade] storeObjectToUserDefaults:@(_chkAutoLogin.checked) forKey:USDEF_APP_AUTO_LOGIN];
-            [[JDFacade facade] storeObjectToKeychain:[JDFacade facade].loginUser.authToken forKey:USDEF_SESSION_AUTOTOKEN];
+//            [[JDFacade facade] storeObject:[_txtEmail.text trim] forKey:USDEF_SESSION_LOGIN_ID];
+            [[JDFacade facade] storeObjectToUserDefaults:[JDFacade facade].tmpEmailId forKey:USDEF_SESSION_LOGIN_PWD];
         } else {
             [[JDFacade facade] removeObjectAtKeychain:USDEF_SESSION_AUTOTOKEN];
+            [[JDFacade facade] removeObjectAtKeychain:USDEF_SESSION_LOGIN_PWD];
+            if (!_chkIdSave.checked) {
+                [[JDFacade facade] removeObjectAtKeychain:USDEF_SESSION_LOGIN_ID];
+            }
         }
+        
+        if (_chkIdSave.checked) {
+            [[JDFacade facade] storeObjectToUserDefaults:@(_chkIdSave.checked) forKey:USDEF_APP_SAVE_ID];
+//            [[JDFacade facade] storeObjectToUserDefaultsuser:[_txtEmail.text trim] forKey:USDEF_SESSION_LOGIN_ID];
+        } else {
+            if (!_chkAutoLogin.checked) {
+                [[JDFacade facade] removeObjectAtKeychain:USDEF_SESSION_LOGIN_ID];
+            }
+
+        }
+        
 
         [self actionAfterLogin];
     }
@@ -354,8 +382,8 @@
         return;
     }
 
-    [JDFacade facade].tmpEmailId = _txtEmail.text;
-    [JDFacade facade].tmpPassword = _txtPasswd.text;
+    [JDFacade facade].tmpEmailId = [_txtEmail.text trim];
+    [JDFacade facade].tmpPassword = [_txtPasswd.text trim];
 
     [self requestLogin];
 }