From c523897b4a73c544028e1db3faf09a8f31069f99 Mon Sep 17 00:00:00 2001 From: varjolintu Date: Thu, 9 May 2019 08:45:47 +0300 Subject: [PATCH] Support for displaying expired credentials --- keepassxc-browser/_locales/en/messages.json | 4 ++++ keepassxc-browser/content/autocomplete.js | 2 +- keepassxc-browser/content/keepassxc-browser.js | 18 +++++++++++++----- keepassxc-protocol.md | 3 ++- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/keepassxc-browser/_locales/en/messages.json b/keepassxc-browser/_locales/en/messages.json index 3414f7f..9536225 100644 --- a/keepassxc-browser/_locales/en/messages.json +++ b/keepassxc-browser/_locales/en/messages.json @@ -239,6 +239,10 @@ "message": "Error: No credentials for the given username found.", "description": "Alert message when no credentials are found for the given username." }, + "credentialExpired": { + "message": "Expired", + "description": "If a credential is expired, this is appended to the title label." + }, "fieldsFill": { "message": "Error: Cannot find fields to fill in.", "description": "Alert message when no fields are found to fill in." diff --git a/keepassxc-browser/content/autocomplete.js b/keepassxc-browser/content/autocomplete.js index ec4b221..18eeb2c 100644 --- a/keepassxc-browser/content/autocomplete.js +++ b/keepassxc-browser/content/autocomplete.js @@ -10,7 +10,7 @@ kpxcAutocomplete.input = undefined; kpxcAutocomplete.create = function(input, showListInstantly = false, autoSubmit = false) { kpxcAutocomplete.autoSubmit = autoSubmit; kpxcAutocomplete.input = input; - kpxcAutocomplete.started = true + kpxcAutocomplete.started = true; input.addEventListener('click', function(e) { if (!e.isTrusted) { diff --git a/keepassxc-browser/content/keepassxc-browser.js b/keepassxc-browser/content/keepassxc-browser.js index ef51e47..92f96db 100755 --- a/keepassxc-browser/content/keepassxc-browser.js +++ b/keepassxc-browser/content/keepassxc-browser.js @@ -941,7 +941,7 @@ kpxc.prepareFieldsForCredentials = function(autoFillInForSingle) { // Generate popup-list of usernames + descriptions browser.runtime.sendMessage({ action: 'popup_login', - args: [ [ kpxc.credentials[0].login + ' (' + kpxc.credentials[0].name + ')' ] ] + args: [ [ `${kpxc.credentials[0].login} (${kpxc.credentials[0].name})` ] ] }); } else if (kpxc.credentials.length > 1 || (kpxc.credentials.length > 0 && (!kpxc.settings.autoFillSingleEntry || !autoFillInForSingle))) { kpxc.preparePageForMultipleCredentials(kpxc.credentials); @@ -949,15 +949,23 @@ kpxc.prepareFieldsForCredentials = function(autoFillInForSingle) { }; kpxc.preparePageForMultipleCredentials = function(credentials) { + function getLoginText(credential) { + const visibleLogin = (credential.login.length > 0) ? credential.login : tr('credentialsNoUsername'); + if (credential.expired && credential.expired === 'true') { + return `${visibleLogin} (${credential.name}) [${tr('credentialExpired')}]`; + } + return `${visibleLogin} (${credential.name})`; + } + // Add usernames + descriptions to autocomplete-list and popup-list const usernames = []; kpxcAutocomplete.elements = []; - let visibleLogin; for (let i = 0; i < credentials.length; i++) { - visibleLogin = (credentials[i].login.length > 0) ? credentials[i].login : tr('credentialsNoUsername'); - usernames.push(visibleLogin + ' (' + credentials[i].name + ')'); + const loginText = getLoginText(credentials[i]); + usernames.push(loginText); + const item = { - label: visibleLogin + ' (' + credentials[i].name + ')', + label: loginText, value: credentials[i].login, loginId: i }; diff --git a/keepassxc-protocol.md b/keepassxc-protocol.md index 1a83505..edfc09d 100644 --- a/keepassxc-protocol.md +++ b/keepassxc-protocol.md @@ -204,7 +204,8 @@ Response message data (success, decrypted): { "login": "user2", "name": "user2", - "password": "passwd2" + "password": "passwd2", + "expired": "true" }], "nonce": "tZvLrBzkQ9GxXq9PvKJj4iAnfPT0VZ3Q", "success": "true",