marinofaggiana 5 vuotta sitten
vanhempi
commit
ce961aee34

+ 1 - 1
Cartfile

@@ -21,4 +21,4 @@ github "ivanbruel/MarkdownKit"
 github "https://github.com/marinofaggiana/AFNetworking" "master"
 github "https://github.com/marinofaggiana/KTVHTTPCache" "2.0.2"
 github "https://github.com/marinofaggiana/XLForm" "master"
-github "https://github.com/marinofaggiana/TOPasscodeViewController" "master"
+github "https://github.com/marinofaggiana/TOPasscodeViewController" "0.0.6"

+ 1 - 1
Cartfile.resolved

@@ -16,7 +16,7 @@ github "krzyzanowskim/OpenSSL" "1.0.218"
 github "malcommac/SwiftRichString" "3.7.1"
 github "marinofaggiana/AFNetworking" "2967678c3e0e98c9b8d7e06222ad12d1f49c26f2"
 github "marinofaggiana/KTVHTTPCache" "2.0.2"
-github "marinofaggiana/TOPasscodeViewController" "35347b0414590f4e5d299d873230da8612256760"
+github "marinofaggiana/TOPasscodeViewController" "0.0.6"
 github "marinofaggiana/XLForm" "eb9381ad8129f60402bf412250fb31b95a628a08"
 github "nextcloud/ios-communication-library" "229049eb830d2a4789d9e31f61b740f9cbe4d505"
 github "realm/realm-cocoa" "v4.4.1"

+ 20 - 5
iOSClient/AppDelegate.m

@@ -1693,8 +1693,9 @@
 {
     LAContext *laContext = [LAContext new];
     NSError *error;
+    BOOL isBiometryAvailable = false;
     
-    if ([[CCUtility getBlockCode] length] == 0 || [self.activeAccount length] == 0 || [CCUtility getOnlyLockDir]) return;
+    if ([[CCUtility getPasscode] length] == 0 || [self.activeAccount length] == 0 || [CCUtility getNotPasscodeAtStart]) return;
     
     if (!self.passcodeViewController.view.window) {
            
@@ -1713,11 +1714,14 @@
             if (error == NULL) {
                 if (laContext.biometryType == LABiometryTypeFaceID) {
                     self.passcodeViewController.biometryType = TOPasscodeBiometryTypeFaceID;
-                    self.passcodeViewController.allowBiometricValidation = false;
+                    self.passcodeViewController.allowBiometricValidation = true;
+                    isBiometryAvailable = true;
                 } else if (laContext.biometryType == LABiometryTypeTouchID) {
                     self.passcodeViewController.biometryType = TOPasscodeBiometryTypeTouchID;
-                    self.passcodeViewController.allowBiometricValidation = false;
+                    self.passcodeViewController.allowBiometricValidation = true;
+                    isBiometryAvailable = true;
                 } else {
+                    isBiometryAvailable = false;
                     NSLog(@"No Biometric support");
                 }
             }
@@ -1727,7 +1731,7 @@
     }
     
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void) {
-        if (automaticallyPromptForBiometricValidation && self.passcodeViewController.view.window) {
+        if (automaticallyPromptForBiometricValidation && isBiometryAvailable && self.passcodeViewController.view.window) {
             [[LAContext new] evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:[[NCBrandOptions sharedInstance] brand] reply:^(BOOL success, NSError * _Nullable error) {
                 if (success) {
                     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void) {
@@ -1746,7 +1750,18 @@
 
 - (BOOL)passcodeViewController:(TOPasscodeViewController *)passcodeViewController isCorrectCode:(NSString *)code
 {
-    return [code isEqualToString:[CCUtility getBlockCode]];
+    return [code isEqualToString:[CCUtility getPasscode]];
+}
+
+- (void)didPerformBiometricValidationRequestInPasscodeViewController:(TOPasscodeViewController *)passcodeViewController
+{
+    [[LAContext new] evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:[[NCBrandOptions sharedInstance] brand] reply:^(BOOL success, NSError * _Nullable error) {
+        if (success) {
+            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void) {
+                [passcodeViewController dismissViewControllerAnimated:YES completion:nil];
+            });
+        }
+    }];
 }
 
 #pragma --------------------------------------------------------------------------------------------

+ 12 - 14
iOSClient/Settings/CCSettings.m

@@ -97,7 +97,7 @@
     [section addFormRow:row];
     
     // Lock no screen
-    row = [XLFormRowDescriptor formRowDescriptorWithTag:@"onlylockdir" rowType:XLFormRowDescriptorTypeBooleanSwitch title:NSLocalizedString(@"_lock_protection_no_screen_", nil)];
+    row = [XLFormRowDescriptor formRowDescriptorWithTag:@"notPasscodeAtStart" rowType:XLFormRowDescriptorTypeBooleanSwitch title:NSLocalizedString(@"_lock_protection_no_screen_", nil)];
     row.cellConfigAtConfigure[@"backgroundColor"] = NCBrandColor.sharedInstance.backgroundView;
     [row.cellConfig setObject:[UIFont systemFontOfSize:15.0] forKey:@"textLabel.font"];
     [row.cellConfig setObject:NCBrandColor.sharedInstance.textView forKey:@"textLabel.textColor"];
@@ -227,15 +227,14 @@
     // ------------------------------------------------------------------
 
     XLFormRowDescriptor *rowBloccoPasscode = [self.form formRowWithTag:@"bloccopasscode"];
-    XLFormRowDescriptor *rowSimplyPasscode = [self.form formRowWithTag:@"simplypasscode"];
-    XLFormRowDescriptor *rowOnlyLockDir = [self.form formRowWithTag:@"onlylockdir"];
+    XLFormRowDescriptor *rowNotPasscodeAtStart = [self.form formRowWithTag:@"notPasscodeAtStart"];
     XLFormRowDescriptor *rowFavoriteOffline = [self.form formRowWithTag:@"favoriteoffline"];
     XLFormRowDescriptor *rowDarkModeDetect = [self.form formRowWithTag:@"darkModeDetect"];
     XLFormRowDescriptor *rowDarkMode = [self.form formRowWithTag:@"darkMode"];
 
     // ------------------------------------------------------------------
     
-    if ([[CCUtility getBlockCode] length]) {
+    if ([[CCUtility getPasscode] length]) {
         rowBloccoPasscode.title = NSLocalizedString(@"_lock_active_", nil);
         [rowBloccoPasscode.cellConfig setObject:[CCGraphics changeThemingColorImage:[UIImage imageNamed:@"settingsPasscodeYES"] multiplier:2 color:NCBrandColor.sharedInstance.icon] forKey:@"imageView.image"];
     } else {
@@ -243,8 +242,7 @@
         [rowBloccoPasscode.cellConfig setObject:[CCGraphics changeThemingColorImage:[UIImage imageNamed:@"settingsPasscodeNO"] multiplier:2 color:NCBrandColor.sharedInstance.icon] forKey:@"imageView.image"];
     }
     
-    if ([CCUtility getSimplyBlockCode]) [rowSimplyPasscode setValue:@1]; else [rowSimplyPasscode setValue:@0];
-    if ([CCUtility getOnlyLockDir]) [rowOnlyLockDir setValue:@1]; else [rowOnlyLockDir setValue:@0];
+    if ([CCUtility getNotPasscodeAtStart]) [rowNotPasscodeAtStart setValue:@1]; else [rowNotPasscodeAtStart setValue:@0];
     if ([CCUtility getFavoriteOffline]) [rowFavoriteOffline setValue:@1]; else [rowFavoriteOffline setValue:@0];
     if ([CCUtility getDarkModeDetect]) [rowDarkModeDetect setValue:@1]; else [rowDarkModeDetect setValue:@0];
     if ([CCUtility getDarkMode]) [rowDarkMode setValue:@1]; else [rowDarkMode setValue:@0];
@@ -260,12 +258,12 @@
 {
     [super formRowDescriptorValueHasChanged:rowDescriptor oldValue:oldValue newValue:newValue];
     
-    if ([rowDescriptor.tag isEqualToString:@"onlylockdir"]) {
+    if ([rowDescriptor.tag isEqualToString:@"notPasscodeAtStart"]) {
         
         if ([[rowDescriptor.value valueData] boolValue] == YES) {
-            [CCUtility setOnlyLockDir:true];
+            [CCUtility setNotPasscodeAtStart:true];
         } else {
-            [CCUtility setOnlyLockDir:false];
+            [CCUtility setNotPasscodeAtStart:false];
         }
     }
     
@@ -337,7 +335,7 @@
     [[LAContext new] evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:[[NCBrandOptions sharedInstance] brand] reply:^(BOOL success, NSError * _Nullable error) {
         if (success) {
             dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void) {
-                [CCUtility setBlockCode:@""];
+                [CCUtility setPasscode:@""];
                 [passcodeViewController dismissViewControllerAnimated:YES completion:nil];
                 [self reloadForm];
             });
@@ -347,7 +345,7 @@
 
 - (void)passcodeSettingsViewController:(TOPasscodeSettingsViewController *)passcodeSettingsViewController didChangeToNewPasscode:(NSString *)passcode ofType:(TOPasscodeType)type
 {
-    [CCUtility setBlockCode:passcode];
+    [CCUtility setPasscode:passcode];
     [passcodeSettingsViewController dismissViewControllerAnimated:YES completion:nil];
     
     [self reloadForm];
@@ -360,8 +358,8 @@
 
 - (BOOL)passcodeViewController:(TOPasscodeViewController *)passcodeViewController isCorrectCode:(NSString *)code
 {
-    if ([code isEqualToString:[CCUtility getBlockCode]]) {
-        [CCUtility setBlockCode:@""];
+    if ([code isEqualToString:[CCUtility getPasscode]]) {
+        [CCUtility setPasscode:@""];
         [self reloadForm];
         
         return YES;
@@ -377,7 +375,7 @@
     
     [self deselectFormRow:sender];
 
-    if ([[CCUtility getBlockCode] length] == 0) {
+    if ([[CCUtility getPasscode] length] == 0) {
         
         passcodeSettingsViewController = [[TOPasscodeSettingsViewController alloc] init];
         if (@available(iOS 13.0, *)) {

+ 5 - 5
iOSClient/Settings/NCManageEndToEndEncryption.m

@@ -196,7 +196,7 @@
 {
     [self deselectFormRow:sender];
 
-    if ([[CCUtility getBlockCode] length]) {
+    if ([[CCUtility getPasscode] length]) {
         
         [self passcodeType:@"startE2E"];
         
@@ -214,7 +214,7 @@
 {
     [self deselectFormRow:sender];
     
-    if ([[CCUtility getBlockCode] length]) {
+    if ([[CCUtility getPasscode] length]) {
         
         [self passcodeType:@"readPassphrase"];
         
@@ -232,7 +232,7 @@
 {
     [self deselectFormRow:sender];
     
-    if ([[CCUtility getBlockCode] length]) {
+    if ([[CCUtility getPasscode] length]) {
         
         [self passcodeType:@"removeLocallyEncryption"];
         
@@ -253,7 +253,7 @@
     LAContext *laContext = [LAContext new];
     NSError *error;
     
-    if ([[CCUtility getBlockCode] length] > 0) {
+    if ([[CCUtility getPasscode] length] > 0) {
         
         passcodeViewController = [[TOPasscodeViewController alloc] initWithStyle:TOPasscodeViewStyleTranslucentLight passcodeType:TOPasscodeTypeSixDigits];
         if (@available(iOS 13.0, *)) {
@@ -294,7 +294,7 @@
 
 - (BOOL)passcodeViewController:(TOPasscodeViewController *)passcodeViewController isCorrectCode:(NSString *)code
 {
-    if ([code isEqualToString:[CCUtility getBlockCode]]) {
+    if ([code isEqualToString:[CCUtility getPasscode]]) {
         
         [self passcodeCorrectCode];
         return YES;

+ 4 - 7
iOSClient/Utility/CCUtility.h

@@ -50,14 +50,11 @@
 + (NSString *)getBuild;
 + (NSString *)setBuild;
 
-+ (NSString *)getBlockCode;
-+ (void)setBlockCode:(NSString *)blockcode;
++ (NSString *)getPasscode;
++ (void)setPasscode:(NSString *)passcode;
 
-+ (BOOL)getSimplyBlockCode;
-+ (void)setSimplyBlockCode:(BOOL)simply;
-
-+ (BOOL)getOnlyLockDir;
-+ (void)setOnlyLockDir:(BOOL)lockDir;
++ (BOOL)getNotPasscodeAtStart;
++ (void)setNotPasscodeAtStart:(BOOL)set;
 
 + (NSString *)getOrderSettings;
 + (void)setOrderSettings:(NSString *)order;

+ 9 - 28
iOSClient/Utility/CCUtility.m

@@ -88,44 +88,25 @@
     return build;
 }
 
-+ (NSString *)getBlockCode
++ (NSString *)getPasscode
 {
-    return [UICKeyChainStore stringForKey:@"blockcode" service:k_serviceShareKeyChain];
+    return [UICKeyChainStore stringForKey:@"passcode" service:k_serviceShareKeyChain];
 }
 
-+ (void)setBlockCode:(NSString *)blockcode
++ (void)setPasscode:(NSString *)passcode
 {
-    [UICKeyChainStore setString:blockcode forKey:@"blockcode" service:k_serviceShareKeyChain];
+    [UICKeyChainStore setString:passcode forKey:@"passcode" service:k_serviceShareKeyChain];
 }
 
-+ (BOOL)getSimplyBlockCode
++ (BOOL)getNotPasscodeAtStart
 {
-    NSString *simplyBlockCode = [UICKeyChainStore stringForKey:@"simplyblockcode" service:k_serviceShareKeyChain];
-    
-    if (simplyBlockCode == nil) {
-        
-        [self setSimplyBlockCode:YES];
-        return YES;
-    }
-    
-    return [simplyBlockCode boolValue];
-}
-
-+ (void)setSimplyBlockCode:(BOOL)simply
-{
-    NSString *sSimply = (simply) ? @"true" : @"false";
-    [UICKeyChainStore setString:sSimply forKey:@"simplyblockcode" service:k_serviceShareKeyChain];
-}
-
-+ (BOOL)getOnlyLockDir
-{
-    return [[UICKeyChainStore stringForKey:@"onlylockdir" service:k_serviceShareKeyChain] boolValue];
+    return [[UICKeyChainStore stringForKey:@"notPasscodeAtStart" service:k_serviceShareKeyChain] boolValue];
 }
 
-+ (void)setOnlyLockDir:(BOOL)lockDir
++ (void)setNotPasscodeAtStart:(BOOL)set
 {
-    NSString *sLockDir = (lockDir) ? @"true" : @"false";
-    [UICKeyChainStore setString:sLockDir forKey:@"onlylockdir" service:k_serviceShareKeyChain];
+    NSString *sSet = (set) ? @"true" : @"false";
+    [UICKeyChainStore setString:sSet forKey:@"notPasscodeAtStart" service:k_serviceShareKeyChain];
 }
 
 + (NSString *)getOrderSettings