diff --git a/MacPass/Base.lproj/PasswordInputView.xib b/MacPass/Base.lproj/PasswordInputView.xib index ba6d5339..ff8411de 100644 --- a/MacPass/Base.lproj/PasswordInputView.xib +++ b/MacPass/Base.lproj/PasswordInputView.xib @@ -16,7 +16,9 @@ + + @@ -41,7 +43,7 @@ - + @@ -49,7 +51,7 @@ - + @@ -156,12 +158,22 @@ DQ + - + @@ -180,8 +192,10 @@ DQ + + diff --git a/MacPass/MPPasswordInputController.m b/MacPass/MPPasswordInputController.m index 6002b161..d1b1b9f5 100644 --- a/MacPass/MPPasswordInputController.m +++ b/MacPass/MPPasswordInputController.m @@ -27,6 +27,7 @@ #import "MPSettingsHelper.h" #import "MPPathControl.h" #import "MPTouchBarButtonCreator.h" +#import "MPSettingsHelper.h" #import "HNHUi/HNHUi.h" @@ -47,6 +48,7 @@ static NSMutableDictionary* touchIDSecuredPasswords; @property (weak) IBOutlet NSButton *unlockButton; @property (weak) IBOutlet NSButton *cancelButton; @property (weak) IBOutlet NSButton *touchIdButton; +@property (weak) IBOutlet NSButton *touchIdEnabled; @property (copy) NSString *message; @property (copy) NSString *cancelLabel; @@ -88,6 +90,11 @@ static NSMutableDictionary* touchIDSecuredPasswords; [self.enablePasswordCheckBox bind:NSValueBinding toObject:self withKeyPath:NSStringFromSelector(@selector(enablePassword)) options:nil]; [self.togglePasswordButton bind:NSEnabledBinding toObject:self withKeyPath:NSStringFromSelector(@selector(enablePassword)) options:nil]; [self.passwordTextField bind:NSEnabledBinding toObject:self withKeyPath:NSStringFromSelector(@selector(enablePassword)) options:nil]; + self.touchIdEnabled.hidden = true; + if (@available(macOS 10.13.4, *)) { + self.touchIdEnabled.hidden = false; + self.touchIdEnabled.state = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyEntryTouchIdEnabled]; + } [self _reset]; } @@ -142,7 +149,7 @@ static NSMutableDictionary* touchIDSecuredPasswords; BOOL cancel = (sender == self.cancelButton); BOOL result = self.completionHandler(password, self.keyPathControl.URL, cancel, &error); if(cancel || result) { - if(result && self.keyPathControl.URL == nil) { + if(result && self.keyPathControl.URL == nil && self.touchIdEnabled.state) { [self _storePasswordForTouchIDUnlock:password forDatabase:self.absoluteURLString]; } return; @@ -307,6 +314,9 @@ static NSMutableDictionary* touchIDSecuredPasswords; self.keyPathControl.URL = nil; } } +- (IBAction)touchIdEnabledChanged:(id)sender { + [NSUserDefaults.standardUserDefaults setBool:self.touchIdEnabled.state forKey:kMPSettingsKeyEntryTouchIdEnabled]; +} - (void)_reset { self.showPassword = NO; diff --git a/MacPass/MPSettingsHelper.h b/MacPass/MPSettingsHelper.h index b7dcacfb..bcaba4f2 100644 --- a/MacPass/MPSettingsHelper.h +++ b/MacPass/MPSettingsHelper.h @@ -22,6 +22,9 @@ #import +/* TouchID */ +APPKIT_EXTERN NSString *const kMPSettingsKeyEntryTouchIdEnabled; + /* Clipboard */ APPKIT_EXTERN NSString *const kMPSettingsKeyPasteboardClearTimeout; APPKIT_EXTERN NSString *const kMPSettingsKeyClearPasteboardOnQuit; diff --git a/MacPass/MPSettingsHelper.m b/MacPass/MPSettingsHelper.m index c17f8f91..7e94d164 100644 --- a/MacPass/MPSettingsHelper.m +++ b/MacPass/MPSettingsHelper.m @@ -62,6 +62,8 @@ NSString *const kMPSettingsKeyAutotypeMatchHost = @"Au NSString *const kMPSettingsKeyAutotypeMatchTags = @"AutotypeMatchTags"; NSString *const kMPSettingsKeyGloablAutotypeAlwaysShowCandidateSelection = @"GloablAutotypeAlwaysShowCandidateSelection"; +NSString *const kMPSettingsKeyEntryTouchIdEnabled = @"EnableSubsequentUnlocksWithTouchID"; + NSString *const kMPSettingsKeyEntrySearchFilterContext = @"EntrySearchFilterContext"; NSString *const kMPSettingsKeyEnableQuicklookPreview = @"EnableQuicklookPreview";