Skip to content

Commit 0934446

Browse files
author
Sami Vänttinen
authored
Merge pull request #2143 from keepassxreboot/fix/passkeys_fix_forwarding_to_fallback
Fix forwarding to fallback on errors
2 parents 1b85039 + f36985f commit 0934446

3 files changed

Lines changed: 11 additions & 5 deletions

File tree

keepassxc-browser/content/keepassxc-browser.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -843,7 +843,9 @@ kpxc.enablePasskeys = function() {
843843
kpxcUI.createNotification('error', errorMessage);
844844
}
845845

846-
if (letTimerRunOut(ret?.response?.errorCode)) {
846+
if (kpxc.settings.passkeysFallback) {
847+
kpxcPasskeysUtils.sendPasskeysResponse(undefined, ret.response?.errorCode, errorMessage);
848+
} else if (letTimerRunOut(ret?.response?.errorCode)) {
847849
return;
848850
}
849851
}

keepassxc-browser/content/passkeys-utils.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ const kpxcPasskeysUtils = {};
5656
// Sends response from KeePassXC back to the injected script
5757
kpxcPasskeysUtils.sendPasskeysResponse = function(publicKey, errorCode, errorMessage) {
5858
const response = errorCode
59-
? { errorCode: errorCode, errorMessage: errorMessage }
59+
? { errorCode: errorCode, errorMessage: errorMessage, fallback: kpxc.settings.passkeysFallback }
6060
: { publicKey: publicKey, fallback: kpxc.settings.passkeysFallback };
6161
const details = isFirefox() ? cloneInto(response, document.defaultView) : response;
6262
document.dispatchEvent(new CustomEvent('kpxc-passkeys-response', { detail: details }));

keepassxc-browser/content/passkeys.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ const isSameOriginWithAncestors = function() {
4646
};
4747

4848
// Throws errors to a correct exceptions
49-
const handleError = function(errorCode, errorMessage) {
49+
const throwError = function(errorCode, errorMessage) {
5050
if ((!errorCode && !errorMessage) || errorCode === PASSKEYS_REQUEST_CANCELED) {
5151
// No error or canceled by user. Stop the timer but throw no exception. Fallback with be called instead.
5252
return;
@@ -103,7 +103,9 @@ const handleError = function(errorCode, errorMessage) {
103103
});
104104

105105
if (!response.publicKey) {
106-
handleError(response?.errorCode, response?.errorMessage);
106+
if (!response.fallback) {
107+
throwError(response?.errorCode, response?.errorMessage);
108+
}
107109
return response.fallback ? originalCredentials.create(options) : null;
108110
}
109111

@@ -129,7 +131,9 @@ const handleError = function(errorCode, errorMessage) {
129131
});
130132

131133
if (!response.publicKey) {
132-
handleError(response?.errorCode, response?.errorMessage);
134+
if (!response.fallback) {
135+
throwError(response?.errorCode, response?.errorMessage);
136+
}
133137
return response.fallback ? originalCredentials.get(options) : null;
134138
}
135139

0 commit comments

Comments
 (0)