From 8f28059ac3d7b2f3ee5af5542695d731585dce40 Mon Sep 17 00:00:00 2001 From: varjolintu Date: Sun, 9 Jun 2024 15:34:18 +0300 Subject: [PATCH] Add configuration option for default passkeys group --- keepassxc-browser/_locales/en/messages.json | 4 ++++ keepassxc-browser/background/keepass.js | 6 ++---- keepassxc-browser/background/page.js | 1 + keepassxc-browser/options/options.html | 17 +++++++++++++++++ keepassxc-browser/options/options.js | 15 +++++++++++++++ keepassxc-protocol.md | 1 + 6 files changed, 40 insertions(+), 4 deletions(-) diff --git a/keepassxc-browser/_locales/en/messages.json b/keepassxc-browser/_locales/en/messages.json index 970bbee..fd03783 100644 --- a/keepassxc-browser/_locales/en/messages.json +++ b/keepassxc-browser/_locales/en/messages.json @@ -714,6 +714,10 @@ "message": "Separate the group with slashes, for example: Group/ChildGroup.", "description": "Default group help text." }, + "optionsLabelDefaultPasskeyGroup": { + "message": "Default group for saving new passkeys:", + "description": "Default passkey group options text." + }, "optionsLabelDefaultGroupCheckboxText": { "message": "Always ask where to save new credentials", "description": "Default group checkbox help text." diff --git a/keepassxc-browser/background/keepass.js b/keepassxc-browser/background/keepass.js index 69d2200..25c53d2 100755 --- a/keepassxc-browser/background/keepass.js +++ b/keepassxc-browser/background/keepass.js @@ -608,15 +608,13 @@ keepass.passkeysRegister = async function(tab, args = []) { const kpAction = kpActions.PASSKEYS_REGISTER; const nonce = keepassClient.getNonce(); - - // Parse publicKey - const publicKey = args[0]; - const origin = args[1]; + const [ publicKey, origin ] = args; const messageData = { action: kpAction, publicKey: JSON.parse(JSON.stringify(publicKey)), origin: origin, + groupName: page?.settings?.defaultPasskeyGroup, keys: keepass.getCryptoKeys() }; diff --git a/keepassxc-browser/background/page.js b/keepassxc-browser/background/page.js index ca6ba9a..81f4308 100755 --- a/keepassxc-browser/background/page.js +++ b/keepassxc-browser/background/page.js @@ -16,6 +16,7 @@ const defaultSettings = { credentialSorting: SORT_BY_GROUP_AND_TITLE, debugLogging: false, defaultGroup: '', + defaultPasskeyGroup: '', defaultGroupAlwaysAsk: false, downloadFaviconAfterSave: false, passkeys: false, diff --git a/keepassxc-browser/options/options.html b/keepassxc-browser/options/options.html index 72090a8..779ace9 100644 --- a/keepassxc-browser/options/options.html +++ b/keepassxc-browser/options/options.html @@ -368,6 +368,23 @@
+ + +
+ +
+ + + +
+
+
diff --git a/keepassxc-browser/options/options.js b/keepassxc-browser/options/options.js index 9a460f6..56e598f 100644 --- a/keepassxc-browser/options/options.js +++ b/keepassxc-browser/options/options.js @@ -112,6 +112,7 @@ options.initGeneralSettings = async function() { $('#tab-general-settings select#afterFillSorting').value = options.settings['afterFillSorting']; $('#tab-general-settings select#afterFillSortingTotp').value = options.settings['afterFillSortingTotp']; $('#tab-general-settings input#defaultGroup').value = options.settings['defaultGroup']; + $('#tab-general-settings input#defaultPasskeyGroup').value = options.settings['defaultPasskeyGroup']; $('#tab-general-settings input#clearCredentialTimeout').value = options.settings['clearCredentialsTimeout']; const generalSettingsRadioInputs = document.querySelectorAll('#tab-general-settings input[type=radio]'); @@ -203,6 +204,7 @@ options.initGeneralSettings = async function() { }); }); + // Default group $('#defaultGroupButton').addEventListener('click', async function() { const value = $('#defaultGroup').value; options.settings['defaultGroup'] = (value.length > 0 ? value : ''); @@ -215,6 +217,19 @@ options.initGeneralSettings = async function() { await options.saveSettings(); }); + // Default passkey group + $('#defaultPasskeyGroupButton').addEventListener('click', async function() { + const value = $('#defaultPasskeyGroup').value; + options.settings['defaultPasskeyGroup'] = (value.length > 0 ? value : ''); + await options.saveSettings(); + }); + + $('#defaultPasskeyGroupButtonReset').addEventListener('click', async function() { + $('#defaultPasskeyGroup').value = ''; + options.settings['defaultPasskeyGroup'] = ''; + await options.saveSettings(); + }); + let temporarySettings; const dialogImportSettingsModal = new bootstrap.Modal('#dialogImportSettings', { keyboard: true, focus: false, backdrop: true }); diff --git a/keepassxc-protocol.md b/keepassxc-protocol.md index d43bb67..74def34 100644 --- a/keepassxc-protocol.md +++ b/keepassxc-protocol.md @@ -483,6 +483,7 @@ Unencrypted message: "action": "passkeys-register", "publicKey": PublicKeyCredentialCreationOptions, "origin": "tZvLrBzkQ9GxXq9PvKJj4iAnfPT0VZ3Q", + "groupName": "", "keys: [ { "id": "",