diff --git a/MacPass/Base.lproj/EntryInspectorView.xib b/MacPass/Base.lproj/EntryInspectorView.xib
index d4011edc..6597ca82 100644
--- a/MacPass/Base.lproj/EntryInspectorView.xib
+++ b/MacPass/Base.lproj/EntryInspectorView.xib
@@ -263,7 +263,7 @@
-
+
@@ -523,7 +523,7 @@
-
+
@@ -778,7 +778,7 @@
-
+
@@ -878,7 +878,7 @@
-
+
diff --git a/MacPass/Base.lproj/GeneralSettings.xib b/MacPass/Base.lproj/GeneralSettings.xib
index 9ee986fa..8e1daadb 100644
--- a/MacPass/Base.lproj/GeneralSettings.xib
+++ b/MacPass/Base.lproj/GeneralSettings.xib
@@ -1,9 +1,9 @@
-
-
+
+
-
-
+
+
@@ -12,6 +12,7 @@
+
@@ -21,16 +22,16 @@
-
+
-
-
+
+
-
+
-
-
+
+
@@ -41,7 +42,7 @@
-
+
@@ -61,7 +62,7 @@
-
+
@@ -88,14 +89,14 @@
-
-
+
+
@@ -109,7 +110,7 @@
-
+
@@ -128,7 +129,19 @@
+
+
+
+
+
+
@@ -149,18 +162,15 @@
-
-
-
-
-
+
+
@@ -188,8 +198,6 @@
-
-
@@ -202,7 +210,7 @@
-
+
diff --git a/MacPass/MPAppDelegate.m b/MacPass/MPAppDelegate.m
index 7be47a0b..1dc7000e 100644
--- a/MacPass/MPAppDelegate.m
+++ b/MacPass/MPAppDelegate.m
@@ -101,7 +101,7 @@ NSString *const MPDidChangeStoredKeyFilesSettings = @"com.hicknhack.macpass.MPDi
/* We want to inform anyone about the changes to keyFile remembering */
[self bind:NSStringFromSelector(@selector(isAllowedToStoreKeyFile))
- toObject:[NSUserDefaultsController sharedUserDefaultsController]
+ toObject:NSUserDefaultsController.sharedUserDefaultsController
withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyRememberKeyFilesForDatabases]
options:nil];
}
diff --git a/MacPass/MPCustomFieldTableViewDelegate.m b/MacPass/MPCustomFieldTableViewDelegate.m
index fd5c5a66..bf26f76d 100644
--- a/MacPass/MPCustomFieldTableViewDelegate.m
+++ b/MacPass/MPCustomFieldTableViewDelegate.m
@@ -39,6 +39,7 @@
toObject:view
withKeyPath:[NSString stringWithFormat:@"%@.%@", NSStringFromSelector(@selector(objectValue)), NSStringFromSelector(@selector(value))]
options:nil];
+
// TODO: Move to public KeePassKit API!
for(NSControl *control in @[view.labelTextField, view.valueTextField, view.removeButton ]) {
[control bind:NSEnabledBinding
@@ -53,9 +54,8 @@
view.observer = tableView.window.windowController.document;
- //[view.removeButton bind:NSVisibleBinding toObject:view.valueTextField withKeyPath:@"" options:nil];
-
return view;
}
+
@end
diff --git a/MacPass/MPEntryInspectorViewController.h b/MacPass/MPEntryInspectorViewController.h
index ca568a28..80e7eae6 100644
--- a/MacPass/MPEntryInspectorViewController.h
+++ b/MacPass/MPEntryInspectorViewController.h
@@ -42,7 +42,7 @@
@property (weak) IBOutlet NSTableView *attachmentTableView;
/* Custom Fields */
-@property (weak) IBOutlet NSTableView *customFieldsTableView;
+@property (strong) IBOutlet NSTableView *customFieldsTableView;
@property (weak) IBOutlet NSButton *showCustomDataButton;
/* Autotype */
diff --git a/MacPass/MPGeneralSettingsController.h b/MacPass/MPGeneralSettingsController.h
index 4e206ce2..8355e88b 100644
--- a/MacPass/MPGeneralSettingsController.h
+++ b/MacPass/MPGeneralSettingsController.h
@@ -16,6 +16,7 @@
@property (weak) IBOutlet NSPopUpButton *clearPasteboardTimeoutPopup;
@property (weak) IBOutlet NSPopUpButton *idleTimeOutPopup;
@property (weak) IBOutlet NSButton *lockOnSleepCheckButton;
+@property (weak) IBOutlet NSButton *lockOnLogoutCheckButton;
@property (weak) IBOutlet NSButton *reopenLastDatabase;
@property (weak) IBOutlet NSButton *createUntitledOnActivation;
@property (weak) IBOutlet NSButton *rememberKeyFileCheckButton;
diff --git a/MacPass/MPGeneralSettingsController.m b/MacPass/MPGeneralSettingsController.m
index 4ccdd8ec..cc46af41 100644
--- a/MacPass/MPGeneralSettingsController.m
+++ b/MacPass/MPGeneralSettingsController.m
@@ -36,6 +36,7 @@ NSString *const MPGeneralSetingsIdentifier = @"GeneralSettingsTab";
[self.clearPasteboardOnQuitCheckButton bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyClearPasteboardOnQuit] options:nil];
[self.clearPasteboardTimeoutPopup bind:NSSelectedTagBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyPasteboardClearTimeout] options:nil];
[self.lockOnSleepCheckButton bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyLockOnSleep] options:nil];
+ [self.lockOnLogoutCheckButton bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingskeyLockOnLogout] options:nil];
[self.idleTimeOutPopup bind:NSSelectedTagBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyIdleLockTimeOut] options:nil];
[self.reopenLastDatabase bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyReopenLastDatabaseOnLaunch] options:nil];
[self.rememberKeyFileCheckButton bind:NSValueBinding toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyRememberKeyFilesForDatabases] options:nil];
diff --git a/MacPass/MPLockDaemon.m b/MacPass/MPLockDaemon.m
index 8c6e3129..4cc9e383 100644
--- a/MacPass/MPLockDaemon.m
+++ b/MacPass/MPLockDaemon.m
@@ -13,6 +13,7 @@
@interface MPLockDaemon ()
@property (nonatomic,assign) BOOL lockOnSleep;
+@property (nonatomic,assign) BOOL lockOnLogout;
@property (nonatomic,assign) NSUInteger idleLockTime;
@property (nonatomic,strong) id eventHandler;
@property (nonatomic,strong) NSTimer *idleCheckTimer;
@@ -43,6 +44,7 @@ static MPLockDaemon *_sharedInstance;
NSUserDefaultsController *defaultsController = [NSUserDefaultsController sharedUserDefaultsController];
[self bind:NSStringFromSelector(@selector(lockOnSleep)) toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyLockOnSleep] options:nil];
[self bind:NSStringFromSelector(@selector(idleLockTime)) toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingsKeyIdleLockTimeOut] options:nil];
+ [self bind:NSStringFromSelector(@selector(lockOnLogout)) toObject:defaultsController withKeyPath:[MPSettingsHelper defaultControllerPathForKey:kMPSettingskeyLockOnLogout] options:nil];
}
return self;
}
@@ -55,6 +57,18 @@ static MPLockDaemon *_sharedInstance;
[NSEvent removeMonitor:self.eventHandler];
}
+- (void)setLockOnLogout:(BOOL)lockOnLogout {
+ if(_lockOnLogout != lockOnLogout) {
+ _lockOnLogout = lockOnLogout;
+ if(_lockOnLogout) {
+ [NSWorkspace.sharedWorkspace.notificationCenter addObserver:self selector:@selector(_willLogOutNotification:) name:NSWorkspaceSessionDidResignActiveNotification object:nil];
+ }
+ else {
+ [NSWorkspace.sharedWorkspace.notificationCenter removeObserver:self name:@"" object:nil];
+ }
+ }
+}
+
- (void)setLockOnSleep:(BOOL)lockOnSleep {
if(_lockOnSleep != lockOnSleep) {
_lockOnSleep = lockOnSleep;
@@ -62,7 +76,7 @@ static MPLockDaemon *_sharedInstance;
[[NSWorkspace sharedWorkspace].notificationCenter addObserver:self selector:@selector(_willSleepNotification:) name:NSWorkspaceWillSleepNotification object:nil];
}
else {
- [[NSWorkspace sharedWorkspace].notificationCenter removeObserver:self];
+ [[NSWorkspace sharedWorkspace].notificationCenter removeObserver:self name:NSWorkspaceWillSleepNotification object:nil];
}
}
}
@@ -79,6 +93,9 @@ static MPLockDaemon *_sharedInstance;
}
}
+- (void)_willLogOutNotification:(NSNotification *)notification {
+ [((MPAppDelegate *)NSApp.delegate) lockAllDocuments];
+}
- (void)_willSleepNotification:(NSNotification *)notification {
[((MPAppDelegate *)NSApp.delegate) lockAllDocuments];
}
diff --git a/MacPass/MPSettingsHelper.h b/MacPass/MPSettingsHelper.h
index 36de2aca..743ce992 100644
--- a/MacPass/MPSettingsHelper.h
+++ b/MacPass/MPSettingsHelper.h
@@ -22,6 +22,7 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyBrowserBundleId;
/* Autolock */
APPKIT_EXTERN NSString *const kMPSettingsKeyLockOnSleep;
+APPKIT_EXTERN NSString *const kMPSettingskeyLockOnLogout;
APPKIT_EXTERN NSString *const kMPSettingsKeyIdleLockTimeOut;
/* Autosaving states */
diff --git a/MacPass/MPSettingsHelper.m b/MacPass/MPSettingsHelper.m
index a0bb06d5..8f391ee3 100644
--- a/MacPass/MPSettingsHelper.m
+++ b/MacPass/MPSettingsHelper.m
@@ -18,6 +18,7 @@ NSString *const kMPSettingsKeyBrowserBundleId = @"Browse
NSString *const kMPSettingsKeyOpenEmptyDatabaseOnLaunch = @"OpenEmptyDatabaseOnLaunch";
NSString *const kMPSettingsKeyReopenLastDatabaseOnLaunch = @"ReopenLastDatabaseOnLaunch";
NSString *const kMPSettingsKeyLockOnSleep = @"LockOnSleep";
+NSString *const kMPSettingskeyLockOnLogout = @"LockOnLogout";
NSString *const kMPSettingsKeyIdleLockTimeOut = @"IdleLockTimeOut";
NSString *const kMPSettingsKeyShowInspector = @"ShowInspector";
NSString *const kMPSettingsKeyEntryTableSortDescriptors = @"EntryTableSortDescriptors";
@@ -101,6 +102,7 @@ NSString *const kMPDeprecatedSettingsKeyDefaultPasswordRounds = @"Ke
kMPSettingsKeyOpenEmptyDatabaseOnLaunch: @NO,
kMPSettingsKeyReopenLastDatabaseOnLaunch: @YES,
kMPSettingsKeyLockOnSleep: @YES,
+ kMPSettingskeyLockOnLogout: @NO,
kMPSettingsKeyIdleLockTimeOut: @0, // 5 minutes
kMPSettingsKeyLegacyHideNotes: @NO,
kMPSettingsKeyLegacyHidePassword: @YES,