Skip to content

Commit 3caea4a

Browse files
committed
adding sign-in flow for totp
1 parent 0471089 commit 3caea4a

File tree

2 files changed

+38
-5
lines changed

2 files changed

+38
-5
lines changed

packages/auth/src/api/authentication/mfa.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import {
2323
} from '../index';
2424
import { Auth } from '../../model/public_types';
2525
import { IdTokenResponse } from '../../model/id_token';
26-
import { MfaEnrollment } from '../account_management/mfa';
26+
import { MfaEnrollment, TotpVerificationInfo } from '../account_management/mfa';
2727
import { SignInWithIdpResponse } from './idp';
2828
import {
2929
SignInWithPhoneNumberRequest,
@@ -79,8 +79,17 @@ export interface FinalizePhoneMfaSignInRequest {
7979
tenantId?: string;
8080
}
8181

82+
export interface FinalizeTotpMfaSignInRequest {
83+
mfaPendingCredential: string;
84+
totpVerificationInfo: TotpVerificationInfo;
85+
tenantId?: string;
86+
}
87+
8288
export interface FinalizePhoneMfaSignInResponse extends FinalizeMfaResponse {}
8389

90+
export interface FinalizeTotpMfaSignInResponse extends FinalizeMfaResponse {}
91+
92+
8493
export function finalizeSignInPhoneMfa(
8594
auth: Auth,
8695
request: FinalizePhoneMfaSignInRequest
@@ -96,6 +105,22 @@ export function finalizeSignInPhoneMfa(
96105
);
97106
}
98107

108+
export function finalizeSignInTotpMfa(
109+
auth: Auth,
110+
request: FinalizeTotpMfaSignInRequest
111+
): Promise<FinalizeTotpMfaSignInResponse> {
112+
return _performApiRequest<
113+
FinalizeTotpMfaSignInRequest,
114+
FinalizeTotpMfaSignInResponse
115+
>(
116+
auth,
117+
HttpMethod.POST,
118+
Endpoint.FINALIZE_MFA_SIGN_IN,
119+
_addTidIfNecessary(auth, request)
120+
);
121+
}
122+
123+
99124
/**
100125
* @internal
101126
*/

packages/auth/src/mfa/assertions/totp.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import {
2626
StartTotpMfaEnrollmentResponse,
2727
TotpVerificationInfo
2828
} from '../../api/account_management/mfa';
29-
import { FinalizeMfaResponse } from '../../api/authentication/mfa';
29+
import { FinalizeMfaResponse, finalizeSignInTotpMfa } from '../../api/authentication/mfa';
3030
import { MultiFactorAssertionImpl } from '../../mfa/mfa_assertion';
3131
import { MultiFactorSessionImpl } from '../mfa_session';
3232
import { AuthErrorCode } from '../../core/errors';
@@ -155,10 +155,18 @@ export class TotpMultiFactorAssertionImpl
155155

156156
/** @internal */
157157
_finalizeSignIn(
158-
_auth: AuthInternal,
159-
_mfaPendingCredential: string
158+
auth: AuthInternal,
159+
mfaPendingCredential: string
160160
): Promise<FinalizeMfaResponse> {
161-
throw new Error('method not implemented');
161+
_assert(
162+
typeof this.secret !== 'undefined',
163+
auth,
164+
AuthErrorCode.ARGUMENT_ERROR
165+
);
166+
return finalizeSignInTotpMfa(auth, {
167+
mfaPendingCredential,
168+
totpVerificationInfo: this.secret._makeTotpVerificationInfo(this.otp)
169+
});
162170
}
163171
}
164172

0 commit comments

Comments
 (0)