marinofaggiana 5 lat temu
rodzic
commit
754567eba4

+ 1 - 9
iOSClient/AppDelegate.m

@@ -280,8 +280,6 @@ PKPushRegistry *pushRegistry;
 
 - (void)openLoginView:(UIViewController *)viewController delegate:(id)delegate loginType:(NSInteger)loginType selector:(NSInteger)selector
 {
-    BOOL loginWebFlow = NO;
-    
     @synchronized (self) {
 
         // use appConfig [MDM]
@@ -324,13 +322,7 @@ PKPushRegistry *pushRegistry;
         //
         
         // Login flow : LoginWeb
-        if (loginType == k_login_Modify_Password) {
-            tableAccount *account = [[NCManageDatabase sharedInstance] getAccountActive];
-            if (account.loginFlow)
-                loginWebFlow = YES;
-        }
-            
-        if (loginWebFlow || selector == k_intro_signup) {
+        if (selector == k_intro_signup) {
             
             if (!(_activeLoginWeb.isViewLoaded && _activeLoginWeb.view.window)) {
                 

+ 1 - 1
iOSClient/CCGlobal.h

@@ -82,7 +82,7 @@
 
 // Database Realm
 #define k_databaseDefault                               @"nextcloud.realm"
-#define k_databaseSchemaVersion                         78
+#define k_databaseSchemaVersion                         79
 
 // Intro selector
 #define k_intro_login                                   0

+ 0 - 1
iOSClient/Database/NCDatabase.swift

@@ -47,7 +47,6 @@ class tableAccount: Object {
     @objc dynamic var displayName = ""
     @objc dynamic var email = ""
     @objc dynamic var enabled: Bool = false
-    @objc dynamic var loginFlow: Bool = false
     @objc dynamic var optimization = NSDate()
     @objc dynamic var password = ""
     @objc dynamic var phone = ""

+ 2 - 3
iOSClient/Database/NCManageDatabase.swift

@@ -203,7 +203,7 @@ class NCManageDatabase: NSObject {
     //MARK: -
     //MARK: Table Account
     
-    @objc func addAccount(_ account: String, url: String, user: String, password: String, loginFlow: Bool) {
+    @objc func addAccount(_ account: String, url: String, user: String, password: String) {
 
         let realm = try! Realm()
 
@@ -212,8 +212,7 @@ class NCManageDatabase: NSObject {
         let addObject = tableAccount()
             
         addObject.account = account
-        addObject.loginFlow = loginFlow
-            
+        
         // Brand
         if NCBrandOptions.sharedInstance.use_default_auto_upload {
                 

+ 67 - 0
iOSClient/Login/CCLogin.m

@@ -344,6 +344,72 @@
         self.login.enabled = NO;
         [self.activity startAnimating];
 
+        [[OCNetworking sharedManager] getAppPassword:url username:user password:password completion:^(NSString *token, NSString *message, NSInteger errorCode) {
+            
+            [self.activity stopAnimating];
+            self.login.enabled = YES;
+
+            if (errorCode == 0) {
+                
+                // account
+                NSString *account = [NSString stringWithFormat:@"%@ %@", user, url];
+                
+                if (_loginType == k_login_Modify_Password) {
+                    
+                    tableAccount *tableAccount = [[NCManageDatabase sharedInstance] setAccountActive:account];
+                    
+                    // Change Password
+                    [CCUtility setPassword:account password:token];
+                    
+                    // Setting appDelegate active account
+                    [appDelegate settingActiveAccount:account activeUrl:tableAccount.url activeUser:tableAccount.user activeUserID:tableAccount.userID activePassword:token];
+                    
+                    [self.delegate loginSuccess:_loginType];
+                    
+                    [self dismissViewControllerAnimated:YES completion:nil];
+                    
+                } else {
+                    
+                    // NO account found, clear
+                    if ([NCManageDatabase.sharedInstance getAccounts] == nil) { [NCUtility.sharedInstance removeAllSettings]; }
+                    
+                    // STOP Intro
+                    [CCUtility setIntro:YES];
+                    
+                    [[NCManageDatabase sharedInstance] deleteAccount:account];
+                    [[NCManageDatabase sharedInstance] addAccount:account url:url user:user password:token];
+                    
+                    tableAccount *tableAccount = [[NCManageDatabase sharedInstance] setAccountActive:account];
+                    
+                    // Setting appDelegate active account
+                    [appDelegate settingActiveAccount:tableAccount.account activeUrl:tableAccount.url activeUser:tableAccount.user activeUserID:tableAccount.userID activePassword:[CCUtility getPassword:tableAccount.account]];
+                    
+                    [self.delegate loginSuccess:_loginType];
+                    
+                    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
+                        [self dismissViewControllerAnimated:YES completion:nil];
+                    });
+                }
+                
+            } else {
+                
+                self.login.enabled = YES;
+                [self.activity stopAnimating];
+                
+                if (errorCode != NSURLErrorServerCertificateUntrusted) {
+                    
+                    NSString *messageAlert = [NSString stringWithFormat:@"%@.\n%@", NSLocalizedString(@"_not_possible_connect_to_server_", nil), message];
+                    
+                    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"_error_", nil) message:messageAlert preferredStyle:UIAlertControllerStyleAlert];
+                    UIAlertAction *okAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"_ok_", nil) style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {}];
+                    
+                    [alertController addAction:okAction];
+                    [self presentViewController:alertController animated:YES completion:nil];
+                }
+            }
+        }];
+        
+        /*
         [[OCNetworking sharedManager] checkServerUrl:[NSString stringWithFormat:@"%@%@", url, k_webDAV] user:user userID:user password:password completion:^(NSString *message, NSInteger errorCode) {
             
             if (errorCode == 0) {
@@ -409,6 +475,7 @@
                 }
             }
         }];
+        */
     }
 }
 

+ 2 - 2
iOSClient/Login/NCAppConfigView.swift

@@ -83,7 +83,7 @@ class NCAppConfigView: UIViewController {
                     
                     // Add new account
                     NCManageDatabase.sharedInstance.deleteAccount(account)
-                    NCManageDatabase.sharedInstance.addAccount(account, url: serverUrl, user: username, password: password, loginFlow: true)
+                    NCManageDatabase.sharedInstance.addAccount(account, url: serverUrl, user: username, password: token!)
                     
                     guard let tableAccount = NCManageDatabase.sharedInstance.setAccountActive(account) else {
                         self.appDelegate.messageNotification("_error_", description: "setAccountActive error", visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: 0)
@@ -91,7 +91,7 @@ class NCAppConfigView: UIViewController {
                         return
                     }
                     
-                    self.appDelegate.settingActiveAccount(account, activeUrl: serverUrl, activeUser: username, activeUserID: tableAccount.userID, activePassword: password)
+                    self.appDelegate.settingActiveAccount(account, activeUrl: serverUrl, activeUser: username, activeUserID: tableAccount.userID, activePassword: token!)
                     self.delegate?.loginSuccess(NSInteger(k_login_Add_Forced))
                     
                     self.dismiss(animated: true) {}

+ 5 - 5
iOSClient/Login/NCLoginWeb.swift

@@ -115,7 +115,7 @@ extension NCLoginWeb: WKNavigationDelegate {
                     }
                     
                     let username : String = keyValue[1].replacingOccurrences(of: "user:", with: "").replacingOccurrences(of: "+", with: " ")
-                    let password : String = keyValue[2].replacingOccurrences(of: "password:", with: "")
+                    let token : String = keyValue[2].replacingOccurrences(of: "password:", with: "")
                     
                     let account : String = "\(username) \(serverUrl)"
                     
@@ -133,8 +133,8 @@ extension NCLoginWeb: WKNavigationDelegate {
                         }
                         
                         // Change Password & setting active account
-                        CCUtility.setPassword(account, password: password)
-                        appDelegate.settingActiveAccount(account, activeUrl: serverUrl, activeUser: username, activeUserID: appDelegate.activeUserID, activePassword: password)
+                        CCUtility.setPassword(account, password: token)
+                        appDelegate.settingActiveAccount(account, activeUrl: serverUrl, activeUser: username, activeUserID: appDelegate.activeUserID, activePassword: token)
                         
                         self.dismiss(animated: true) {
                             self.delegate?.loginSuccess(NSInteger(self.loginType))
@@ -154,14 +154,14 @@ extension NCLoginWeb: WKNavigationDelegate {
                         
                         // Add new account
                         NCManageDatabase.sharedInstance.deleteAccount(account)
-                        NCManageDatabase.sharedInstance.addAccount(account, url: serverUrl, user: username, password: password, loginFlow: true)
+                        NCManageDatabase.sharedInstance.addAccount(account, url: serverUrl, user: username, password: token)
                         
                         guard let tableAccount = NCManageDatabase.sharedInstance.setAccountActive(account) else {
                             self.dismiss(animated: true, completion: nil)
                             return
                         }
                         
-                        appDelegate.settingActiveAccount(account, activeUrl: serverUrl, activeUser: username, activeUserID: tableAccount.userID, activePassword: password)
+                        appDelegate.settingActiveAccount(account, activeUrl: serverUrl, activeUser: username, activeUserID: tableAccount.userID, activePassword: token)
                         
                         self.dismiss(animated: true) {
                             self.delegate?.loginSuccess(NSInteger(self.loginType))

+ 10 - 7
iOSClient/Networking/OCNetworking.m

@@ -336,11 +336,14 @@
     
     NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error) {
         
+        NSString *message;
+        NSInteger errorCode = 0;
+        NSString *token = nil;
+        
         if (error) {
             
-            NSString *message;
             NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
-            NSInteger errorCode = httpResponse.statusCode;
+            errorCode = httpResponse.statusCode;
             
             if (errorCode == 0 || (errorCode >= 200 && errorCode < 300))
                 errorCode = error.code;
@@ -351,16 +354,16 @@
             else
                 message = [error.userInfo valueForKey:@"NSLocalizedDescription"];
             
-            completion(nil, message, errorCode);
-            
         } else {
             
             NCXMLGetAppPasswordParser *parser = [NCXMLGetAppPasswordParser new];
             [parser initParserWithData:data];
-            NSString *token = parser.token;
-            
-            completion(token, nil, 0);
+            token = parser.token;
         }
+        
+        dispatch_async(dispatch_get_main_queue(), ^{
+            completion(token, message, errorCode);
+        });
     }];
     
     [task resume];