feat: add passkey unlock functionality and improve related error handling

This commit is contained in:
shuaiplus
2026-06-10 12:10:11 +08:00
parent 18e0396c0a
commit 19b96a7aca
9 changed files with 206 additions and 87 deletions
+5 -1
View File
@@ -420,7 +420,7 @@ export async function performPasswordLogin(
};
}
export async function performPasskeyLogin(fallbackIterations: number): Promise<PasskeyLoginResult> {
export async function performPasskeyLogin(fallbackIterations: number, expectedEmail?: string): Promise<PasskeyLoginResult> {
try {
const options = await getAccountPasskeyAssertionOptions();
const assertion = await assertAccountPasskey(options);
@@ -438,6 +438,10 @@ export async function performPasskeyLogin(fallbackIterations: number): Promise<P
if (!email) {
return { kind: 'error', message: t('txt_login_failed') };
}
const normalizedExpectedEmail = String(expectedEmail || '').trim().toLowerCase();
if (normalizedExpectedEmail && email !== normalizedExpectedEmail) {
return { kind: 'error', message: t('txt_passkey_not_for_locked_account') };
}
const prfOption = readPasskeyPrfOption(token);
if (prfOption && assertion.prfKey) {