Auto-fill will be applied if related credentials are available (#2409)

Auto-fill will be applied if related credentials are available
This commit is contained in:
wolfsilver 2025-02-20 23:18:25 +08:00 committed by GitHub
parent 688dee35e9
commit f1cb20f0b7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 33 additions and 3 deletions

View file

@ -766,6 +766,10 @@
"message": "Automatically fill in single-credential entries",
"description": "Automatically fill-in single credential entry checkbox text."
},
"optionsCheckboxAutoFillRelevantCredential": {
"message": "Automatically fill in relevant credential entries",
"description": "Automatically fill-in relevant credential entry checkbox text."
},
"optionsCheckboxAutoFillSingleTotp": {
"message": "Automatically fill in single TOTP entries",
"description": "Automatically fill-in single TOTP entries checkbox text."
@ -914,6 +918,10 @@
"message": "Let KeePassXC-Browser automatically fill in credentials if it receives only a single entry.",
"description": "Auto-Fill Single Entry option help text."
},
"optionsAutoFillRelevantCredentialHelpText": {
"message": "Automatically fill in the relevant credential if a second fill is needed.",
"description": "Auto-Fill Relevant Credential option help text."
},
"optionsAutoFillSingleEntryWarning": {
"message": "Warning! Using auto-fill is not safe. Use at your own risk. KeePassXC-Browser automatically tries to detect login fields. However, they may be detected incorrectly, possibly filling sensitive data to unsafe input fields.",
"description": "Auto-Fill Single Entry warning text."
@ -939,8 +947,8 @@
"description": "Use monochrome toolbar icon option help text."
},
"optionsUseCompactModeHelpText": {
"message": "Use a compact version of the dropdown list to select credentials.",
"description": "Use compact (legacy) mode help text."
"message": "Use a compact version of the dropdown list to select credentials.",
"description": "Use compact (legacy) mode help text."
},
"optionsSaveDomainOnlyHelpText": {
"message": "When saving new credentials, save only the domain instead of full URL.",
@ -1089,7 +1097,7 @@
"optionsColumnAllowIframes": {
"message": "Allow Cross-Origin iframes",
"description": "Allow iframes column text."
},
},
"optionsColumnDelete": {
"message": "Delete",
"description": "Site Preferences list column title."

View file

@ -6,6 +6,7 @@ const defaultSettings = {
autoCompleteUsernames: true,
autoFillAndSend: false,
autoFillSingleEntry: false,
autoFillRelevantCredential: false,
autoFillSingleTotp: false,
autoReconnect: false,
autoRetrieveCredentials: true,

View file

@ -509,6 +509,17 @@ kpxc.prepareCredentials = async function() {
kpxc.initLoginPopup();
kpxc.initAutocomplete();
if (kpxc.settings.autoFillRelevantCredential) {
const pageUuid = await sendMessage('page_get_login_id');
if (pageUuid) {
const relevantCredential = kpxc.credentials.find(c => c.uuid === pageUuid);
const combination = kpxc.combinations?.at(-1);
if (relevantCredential && combination) {
kpxcFill.fillInCredentials(combination, relevantCredential.login, relevantCredential.uuid);
}
}
}
};
/**

View file

@ -24,6 +24,10 @@
"title": "Automatically fill single credential entries. Default: false",
"type": "boolean"
},
"autoFillRelevantCredential": {
"title": "Automatically fill relevant credential entries. Default: false",
"type": "boolean"
},
"autoFillSingleTotp": {
"title": "Automatically fill single TOTP. Default: false",
"type": "boolean"

View file

@ -217,6 +217,11 @@
</div>
<div>
<span class="form-text text-muted" data-i18n="optionsFillSortPriorityHelpText"></span>
<div class="form-check mt-2">
<input class="form-check-input" type="checkbox" name="autoFillRelevantCredential" id="autoFillRelevantCredential" value="true">
<label class="form-check-label" for="autoFillRelevantCredential" data-i18n="optionsCheckboxAutoFillRelevantCredential"></label>
<div class="form-text" data-i18n="optionsAutoFillRelevantCredentialHelpText"></div>
</div>
</div>
<!-- Credential sorting after fill for TOTP -->
@ -246,6 +251,7 @@
<input class="form-check-input" type="checkbox" name="autoFillSingleEntry" id="autoFillSingleEntry" value="true">
<label class="form-check-label" for="autoFillSingleEntry" data-i18n="optionsCheckboxAutoFillSingleEntry"></label>
<div class="form-text" data-i18n="optionsAutoFillSingleEntryHelpText"></div>
<div class="alert alert-warning mt-3 col-lg-9" role="alert">
<i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
<span data-i18n="optionsAutoFillSingleEntryWarning"></span>