webauthn: update login flow to support other 2fa methods

This commit is contained in:
Matthew Penner 2021-07-17 12:48:14 -06:00
parent 42a3e740ba
commit 31c2ef5279
13 changed files with 255 additions and 41 deletions

View file

@ -1,9 +1,11 @@
import http from '@/api/http';
export interface LoginResponse {
methods?: string[];
complete: boolean;
intended?: string;
confirmationToken?: string;
publicKey?: any;
}
export interface LoginData {
@ -19,15 +21,18 @@ export default ({ username, password, recaptchaData }: LoginData): Promise<Login
password,
'g-recaptcha-response': recaptchaData,
})
.then(response => {
if (!(response.data instanceof Object)) {
.then(({ data }) => {
if (!(data instanceof Object)) {
return reject(new Error('An error occurred while processing the login request.'));
}
return resolve({
complete: response.data.data.complete,
intended: response.data.data.intended || undefined,
confirmationToken: response.data.data.confirmation_token || undefined,
methods: data.methods,
complete: data.complete,
intended: data.intended || undefined,
confirmationToken: data.confirmation_token || undefined,
// eslint-disable-next-line camelcase
publicKey: data.webauthn?.public_key || undefined,
});
})
.catch(reject);

View file

@ -9,8 +9,8 @@ export default (token: string, code: string, recoveryToken?: string): Promise<Lo
recovery_token: (recoveryToken && recoveryToken.length > 0) ? recoveryToken : undefined,
})
.then(response => resolve({
complete: response.data.data.complete,
intended: response.data.data.intended || undefined,
complete: response.data.complete,
intended: response.data.intended || undefined,
}))
.catch(reject);
});