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";