@firebase/auth 0.21.5 → 0.21.6-canary.45a55330e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/README.md +25 -0
- package/dist/auth-public.d.ts +135 -4
- package/dist/auth.d.ts +138 -4
- package/dist/browser-cjs/{index-ff477525.js → index-3e63d976.js} +180 -5
- package/dist/browser-cjs/index-3e63d976.js.map +1 -0
- package/dist/browser-cjs/index.d.ts +2 -1
- package/dist/browser-cjs/index.js +3 -1
- package/dist/browser-cjs/index.js.map +1 -1
- package/dist/browser-cjs/internal.js +3 -1
- package/dist/browser-cjs/internal.js.map +1 -1
- package/dist/browser-cjs/src/api/account_management/mfa.d.ts +38 -4
- package/dist/browser-cjs/src/api/authentication/mfa.d.ts +11 -0
- package/dist/browser-cjs/src/core/errors.d.ts +1 -0
- package/dist/browser-cjs/src/core/index.d.ts +1 -0
- package/dist/browser-cjs/src/mfa/assertions/totp.d.ts +124 -0
- package/dist/browser-cjs/src/mfa/assertions/totp.test.d.ts +17 -0
- package/dist/browser-cjs/src/mfa/mfa_info.d.ts +5 -1
- package/dist/browser-cjs/src/model/enum_maps.d.ts +1 -0
- package/dist/browser-cjs/src/model/public_types.d.ts +18 -1
- package/dist/browser-cjs/test/helpers/integration/helpers.d.ts +3 -0
- package/dist/browser-cjs/test/integration/flows/totp.test.d.ts +17 -0
- package/dist/cordova/index.d.ts +2 -1
- package/dist/cordova/index.js +2 -2
- package/dist/cordova/internal.js +179 -3
- package/dist/cordova/internal.js.map +1 -1
- package/dist/cordova/{popup_redirect-a4d3c436.js → popup_redirect-4dd66477.js} +31 -6
- package/dist/cordova/popup_redirect-4dd66477.js.map +1 -0
- package/dist/cordova/src/api/account_management/mfa.d.ts +38 -4
- package/dist/cordova/src/api/authentication/mfa.d.ts +11 -0
- package/dist/cordova/src/core/errors.d.ts +1 -0
- package/dist/cordova/src/core/index.d.ts +1 -0
- package/dist/cordova/src/mfa/assertions/totp.d.ts +124 -0
- package/dist/cordova/src/mfa/assertions/totp.test.d.ts +17 -0
- package/dist/cordova/src/mfa/mfa_info.d.ts +5 -1
- package/dist/cordova/src/model/enum_maps.d.ts +1 -0
- package/dist/cordova/src/model/public_types.d.ts +18 -1
- package/dist/cordova/test/helpers/integration/helpers.d.ts +3 -0
- package/dist/cordova/test/integration/flows/totp.test.d.ts +17 -0
- package/dist/esm2017/{index-3363a72a.js → index-c8153924.js} +179 -6
- package/dist/esm2017/index-c8153924.js.map +1 -0
- package/dist/esm2017/index.d.ts +2 -1
- package/dist/esm2017/index.js +1 -1
- package/dist/esm2017/internal.js +2 -2
- package/dist/esm2017/src/api/account_management/mfa.d.ts +38 -4
- package/dist/esm2017/src/api/authentication/mfa.d.ts +11 -0
- package/dist/esm2017/src/core/errors.d.ts +1 -0
- package/dist/esm2017/src/core/index.d.ts +1 -0
- package/dist/esm2017/src/mfa/assertions/totp.d.ts +124 -0
- package/dist/esm2017/src/mfa/assertions/totp.test.d.ts +17 -0
- package/dist/esm2017/src/mfa/mfa_info.d.ts +5 -1
- package/dist/esm2017/src/model/enum_maps.d.ts +1 -0
- package/dist/esm2017/src/model/public_types.d.ts +18 -1
- package/dist/esm2017/test/helpers/integration/helpers.d.ts +3 -0
- package/dist/esm2017/test/integration/flows/totp.test.d.ts +17 -0
- package/dist/esm5/{index-3f05dc7b.js → index-f3279380.js} +207 -6
- package/dist/esm5/index-f3279380.js.map +1 -0
- package/dist/esm5/index.d.ts +2 -1
- package/dist/esm5/index.js +1 -1
- package/dist/esm5/internal.js +2 -2
- package/dist/esm5/src/api/account_management/mfa.d.ts +38 -4
- package/dist/esm5/src/api/authentication/mfa.d.ts +11 -0
- package/dist/esm5/src/core/errors.d.ts +1 -0
- package/dist/esm5/src/core/index.d.ts +1 -0
- package/dist/esm5/src/mfa/assertions/totp.d.ts +124 -0
- package/dist/esm5/src/mfa/assertions/totp.test.d.ts +17 -0
- package/dist/esm5/src/mfa/mfa_info.d.ts +5 -1
- package/dist/esm5/src/model/enum_maps.d.ts +1 -0
- package/dist/esm5/src/model/public_types.d.ts +18 -1
- package/dist/esm5/test/helpers/integration/helpers.d.ts +3 -0
- package/dist/esm5/test/integration/flows/totp.test.d.ts +17 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.webworker.esm5.js +23 -4
- package/dist/index.webworker.esm5.js.map +1 -1
- package/dist/node/index.d.ts +2 -1
- package/dist/node/index.js +83 -81
- package/dist/node/index.js.map +1 -1
- package/dist/node/internal.js +144 -142
- package/dist/node/internal.js.map +1 -1
- package/dist/node/src/api/account_management/mfa.d.ts +38 -4
- package/dist/node/src/api/authentication/mfa.d.ts +11 -0
- package/dist/node/src/core/errors.d.ts +1 -0
- package/dist/node/src/core/index.d.ts +1 -0
- package/dist/node/src/mfa/assertions/totp.d.ts +124 -0
- package/dist/node/src/mfa/assertions/totp.test.d.ts +17 -0
- package/dist/node/src/mfa/mfa_info.d.ts +5 -1
- package/dist/node/src/model/enum_maps.d.ts +1 -0
- package/dist/node/src/model/public_types.d.ts +18 -1
- package/dist/node/test/helpers/integration/helpers.d.ts +3 -0
- package/dist/node/test/integration/flows/totp.test.d.ts +17 -0
- package/dist/node/{index-45468d80.js → totp-9c98f1ff.js} +243 -6
- package/dist/node/totp-9c98f1ff.js.map +1 -0
- package/dist/node-esm/index.d.ts +2 -1
- package/dist/node-esm/index.js +2 -2
- package/dist/node-esm/internal.js +3 -3
- package/dist/node-esm/src/api/account_management/mfa.d.ts +38 -4
- package/dist/node-esm/src/api/authentication/mfa.d.ts +11 -0
- package/dist/node-esm/src/core/errors.d.ts +1 -0
- package/dist/node-esm/src/core/index.d.ts +1 -0
- package/dist/node-esm/src/mfa/assertions/totp.d.ts +124 -0
- package/dist/node-esm/src/mfa/assertions/totp.test.d.ts +17 -0
- package/dist/node-esm/src/mfa/mfa_info.d.ts +5 -1
- package/dist/node-esm/src/model/enum_maps.d.ts +1 -0
- package/dist/node-esm/src/model/public_types.d.ts +18 -1
- package/dist/node-esm/test/helpers/integration/helpers.d.ts +3 -0
- package/dist/node-esm/test/integration/flows/totp.test.d.ts +17 -0
- package/dist/node-esm/{index-1f9492de.js → totp-a3bfc07a.js} +213 -7
- package/dist/node-esm/totp-a3bfc07a.js.map +1 -0
- package/dist/rn/index.d.ts +2 -1
- package/dist/rn/index.js +1 -1
- package/dist/rn/internal.js +176 -1
- package/dist/rn/internal.js.map +1 -1
- package/dist/rn/{phone-e7bf48a1.js → phone-588b1f48.js} +37 -5
- package/dist/rn/phone-588b1f48.js.map +1 -0
- package/dist/rn/src/api/account_management/mfa.d.ts +38 -4
- package/dist/rn/src/api/authentication/mfa.d.ts +11 -0
- package/dist/rn/src/core/errors.d.ts +1 -0
- package/dist/rn/src/core/index.d.ts +1 -0
- package/dist/rn/src/mfa/assertions/totp.d.ts +124 -0
- package/dist/rn/src/mfa/assertions/totp.test.d.ts +17 -0
- package/dist/rn/src/mfa/mfa_info.d.ts +5 -1
- package/dist/rn/src/model/enum_maps.d.ts +1 -0
- package/dist/rn/src/model/public_types.d.ts +18 -1
- package/dist/rn/test/helpers/integration/helpers.d.ts +3 -0
- package/dist/rn/test/integration/flows/totp.test.d.ts +17 -0
- package/dist/src/api/account_management/mfa.d.ts +38 -4
- package/dist/src/api/authentication/mfa.d.ts +11 -0
- package/dist/src/core/errors.d.ts +1 -0
- package/dist/src/core/index.d.ts +1 -0
- package/dist/src/mfa/assertions/totp.d.ts +124 -0
- package/dist/src/mfa/assertions/totp.test.d.ts +17 -0
- package/dist/src/mfa/mfa_info.d.ts +5 -1
- package/dist/src/model/enum_maps.d.ts +1 -0
- package/dist/src/model/public_types.d.ts +18 -1
- package/dist/test/helpers/integration/helpers.d.ts +3 -0
- package/dist/test/integration/flows/totp.test.d.ts +17 -0
- package/package.json +10 -8
- package/dist/browser-cjs/index-ff477525.js.map +0 -1
- package/dist/cordova/popup_redirect-a4d3c436.js.map +0 -1
- package/dist/esm2017/index-3363a72a.js.map +0 -1
- package/dist/esm5/index-3f05dc7b.js.map +0 -1
- package/dist/node/index-45468d80.js.map +0 -1
- package/dist/node-esm/index-1f9492de.js.map +0 -1
- package/dist/rn/phone-e7bf48a1.js.map +0 -1
package/dist/esm5/index.d.ts
CHANGED
|
@@ -32,5 +32,6 @@ import { signInWithRedirect, linkWithRedirect, reauthenticateWithRedirect, getRe
|
|
|
32
32
|
import { RecaptchaVerifier } from './src/platform_browser/recaptcha/recaptcha_verifier';
|
|
33
33
|
import { browserPopupRedirectResolver } from './src/platform_browser/popup_redirect';
|
|
34
34
|
import { PhoneMultiFactorGenerator } from './src/platform_browser/mfa/assertions/phone';
|
|
35
|
+
import { TotpMultiFactorGenerator, TotpSecret } from './src/mfa/assertions/totp';
|
|
35
36
|
import { getAuth } from './src/platform_browser';
|
|
36
|
-
export { browserLocalPersistence, browserSessionPersistence, indexedDBLocalPersistence, PhoneAuthProvider, signInWithPhoneNumber, linkWithPhoneNumber, reauthenticateWithPhoneNumber, updatePhoneNumber, signInWithPopup, linkWithPopup, reauthenticateWithPopup, signInWithRedirect, linkWithRedirect, reauthenticateWithRedirect, getRedirectResult, RecaptchaVerifier, browserPopupRedirectResolver, PhoneMultiFactorGenerator, getAuth };
|
|
37
|
+
export { browserLocalPersistence, browserSessionPersistence, indexedDBLocalPersistence, PhoneAuthProvider, signInWithPhoneNumber, linkWithPhoneNumber, reauthenticateWithPhoneNumber, updatePhoneNumber, signInWithPopup, linkWithPopup, reauthenticateWithPopup, signInWithRedirect, linkWithRedirect, reauthenticateWithRedirect, getRedirectResult, RecaptchaVerifier, browserPopupRedirectResolver, PhoneMultiFactorGenerator, TotpMultiFactorGenerator, TotpSecret, getAuth };
|
package/dist/esm5/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as ActionCodeOperation,
|
|
1
|
+
export { A as ActionCodeOperation, af as ActionCodeURL, I as AuthCredential, E as AuthErrorCodes, J as EmailAuthCredential, N as EmailAuthProvider, Q as FacebookAuthProvider, F as FactorId, V as GithubAuthProvider, U as GoogleAuthProvider, K as OAuthCredential, W as OAuthProvider, O as OperationType, L as PhoneAuthCredential, P as PhoneAuthProvider, m as PhoneMultiFactorGenerator, p as ProviderId, R as RecaptchaVerifier, X as SAMLAuthProvider, S as SignInMethod, T as TotpMultiFactorGenerator, n as TotpSecret, Y as TwitterAuthProvider, a4 as applyActionCode, v as beforeAuthStateChanged, b as browserLocalPersistence, k as browserPopupRedirectResolver, a as browserSessionPersistence, a5 as checkActionCode, a3 as confirmPasswordReset, H as connectAuthEmulator, a7 as createUserWithEmailAndPassword, C as debugErrorMap, B as deleteUser, ac as fetchSignInMethodsForEmail, an as getAdditionalUserInfo, o as getAuth, ak as getIdToken, al as getIdTokenResult, ap as getMultiFactorResolver, j as getRedirectResult, M as inMemoryPersistence, i as indexedDBLocalPersistence, G as initializeAuth, aa as isSignInWithEmailLink, $ as linkWithCredential, l as linkWithPhoneNumber, d as linkWithPopup, g as linkWithRedirect, aq as multiFactor, w as onAuthStateChanged, t as onIdTokenChanged, ag as parseActionCodeURL, D as prodErrorMap, a0 as reauthenticateWithCredential, r as reauthenticateWithPhoneNumber, e as reauthenticateWithPopup, h as reauthenticateWithRedirect, ao as reload, ad as sendEmailVerification, a2 as sendPasswordResetEmail, a9 as sendSignInLinkToEmail, q as setPersistence, Z as signInAnonymously, _ as signInWithCredential, a1 as signInWithCustomToken, a8 as signInWithEmailAndPassword, ab as signInWithEmailLink, s as signInWithPhoneNumber, c as signInWithPopup, f as signInWithRedirect, z as signOut, am as unlink, y as updateCurrentUser, ai as updateEmail, aj as updatePassword, u as updatePhoneNumber, ah as updateProfile, x as useDeviceLanguage, ae as verifyBeforeUpdateEmail, a6 as verifyPasswordResetCode } from './index-f3279380.js';
|
|
2
2
|
import 'tslib';
|
|
3
3
|
import '@firebase/util';
|
|
4
4
|
import '@firebase/app';
|
package/dist/esm5/internal.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { A as ActionCodeOperation,
|
|
1
|
+
import { ar as _isIOS, as as _isAndroid, at as _fail, au as _getRedirectUrl, av as debugAssert, aw as _getProjectConfig, ax as _isIOS7Or8, ay as _assert, az as _createError, aA as AuthEventManager, aB as _getInstance, b as browserLocalPersistence, aC as _persistenceKeyName, aD as _clearRedirectOutcomes, a as browserSessionPersistence, aE as _getRedirectResult, aF as _overrideRedirectResult, aG as _castAuth } from './index-f3279380.js';
|
|
2
|
+
export { A as ActionCodeOperation, af as ActionCodeURL, I as AuthCredential, E as AuthErrorCodes, aI as AuthImpl, aL as AuthPopup, J as EmailAuthCredential, N as EmailAuthProvider, Q as FacebookAuthProvider, F as FactorId, aM as FetchProvider, V as GithubAuthProvider, U as GoogleAuthProvider, K as OAuthCredential, W as OAuthProvider, O as OperationType, L as PhoneAuthCredential, P as PhoneAuthProvider, m as PhoneMultiFactorGenerator, p as ProviderId, R as RecaptchaVerifier, aN as SAMLAuthCredential, X as SAMLAuthProvider, S as SignInMethod, T as TotpMultiFactorGenerator, n as TotpSecret, Y as TwitterAuthProvider, aH as UserImpl, ay as _assert, aG as _castAuth, at as _fail, aK as _generateEventId, aJ as _getClientVersion, aB as _getInstance, aE as _getRedirectResult, aF as _overrideRedirectResult, aC as _persistenceKeyName, a4 as applyActionCode, v as beforeAuthStateChanged, b as browserLocalPersistence, k as browserPopupRedirectResolver, a as browserSessionPersistence, a5 as checkActionCode, a3 as confirmPasswordReset, H as connectAuthEmulator, a7 as createUserWithEmailAndPassword, C as debugErrorMap, B as deleteUser, ac as fetchSignInMethodsForEmail, an as getAdditionalUserInfo, o as getAuth, ak as getIdToken, al as getIdTokenResult, ap as getMultiFactorResolver, j as getRedirectResult, M as inMemoryPersistence, i as indexedDBLocalPersistence, G as initializeAuth, aa as isSignInWithEmailLink, $ as linkWithCredential, l as linkWithPhoneNumber, d as linkWithPopup, g as linkWithRedirect, aq as multiFactor, w as onAuthStateChanged, t as onIdTokenChanged, ag as parseActionCodeURL, D as prodErrorMap, a0 as reauthenticateWithCredential, r as reauthenticateWithPhoneNumber, e as reauthenticateWithPopup, h as reauthenticateWithRedirect, ao as reload, ad as sendEmailVerification, a2 as sendPasswordResetEmail, a9 as sendSignInLinkToEmail, q as setPersistence, Z as signInAnonymously, _ as signInWithCredential, a1 as signInWithCustomToken, a8 as signInWithEmailAndPassword, ab as signInWithEmailLink, s as signInWithPhoneNumber, c as signInWithPopup, f as signInWithRedirect, z as signOut, am as unlink, y as updateCurrentUser, ai as updateEmail, aj as updatePassword, u as updatePhoneNumber, ah as updateProfile, x as useDeviceLanguage, ae as verifyBeforeUpdateEmail, a6 as verifyPasswordResetCode } from './index-f3279380.js';
|
|
3
3
|
import { __awaiter, __generator, __extends } from 'tslib';
|
|
4
4
|
import { querystringDecode } from '@firebase/util';
|
|
5
5
|
import '@firebase/app';
|
|
@@ -18,7 +18,7 @@ import { SignInWithPhoneNumberRequest } from '../authentication/sms';
|
|
|
18
18
|
import { FinalizeMfaResponse } from '../authentication/mfa';
|
|
19
19
|
import { AuthInternal } from '../../model/auth';
|
|
20
20
|
/**
|
|
21
|
-
* MFA Info as returned by the API
|
|
21
|
+
* MFA Info as returned by the API.
|
|
22
22
|
*/
|
|
23
23
|
interface BaseMfaEnrollment {
|
|
24
24
|
mfaEnrollmentId: string;
|
|
@@ -26,15 +26,20 @@ interface BaseMfaEnrollment {
|
|
|
26
26
|
displayName?: string;
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
|
-
* An MFA provided by SMS verification
|
|
29
|
+
* An MFA provided by SMS verification.
|
|
30
30
|
*/
|
|
31
31
|
export interface PhoneMfaEnrollment extends BaseMfaEnrollment {
|
|
32
32
|
phoneInfo: string;
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
35
|
+
* An MFA provided by TOTP (Time-based One Time Password).
|
|
36
36
|
*/
|
|
37
|
-
export
|
|
37
|
+
export interface TotpMfaEnrollment extends BaseMfaEnrollment {
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* MfaEnrollment can be any subtype of BaseMfaEnrollment, currently only PhoneMfaEnrollment and TotpMfaEnrollment are supported.
|
|
41
|
+
*/
|
|
42
|
+
export declare type MfaEnrollment = PhoneMfaEnrollment | TotpMfaEnrollment;
|
|
38
43
|
export interface StartPhoneMfaEnrollmentRequest {
|
|
39
44
|
idToken: string;
|
|
40
45
|
phoneEnrollmentInfo: {
|
|
@@ -58,6 +63,35 @@ export interface FinalizePhoneMfaEnrollmentRequest {
|
|
|
58
63
|
export interface FinalizePhoneMfaEnrollmentResponse extends FinalizeMfaResponse {
|
|
59
64
|
}
|
|
60
65
|
export declare function finalizeEnrollPhoneMfa(auth: AuthInternal, request: FinalizePhoneMfaEnrollmentRequest): Promise<FinalizePhoneMfaEnrollmentResponse>;
|
|
66
|
+
export interface StartTotpMfaEnrollmentRequest {
|
|
67
|
+
idToken: string;
|
|
68
|
+
totpEnrollmentInfo: {};
|
|
69
|
+
tenantId?: string;
|
|
70
|
+
}
|
|
71
|
+
export interface StartTotpMfaEnrollmentResponse {
|
|
72
|
+
totpSessionInfo: {
|
|
73
|
+
sharedSecretKey: string;
|
|
74
|
+
verificationCodeLength: number;
|
|
75
|
+
hashingAlgorithm: string;
|
|
76
|
+
periodSec: number;
|
|
77
|
+
sessionInfo: string;
|
|
78
|
+
finalizeEnrollmentTime: number;
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export declare function startEnrollTotpMfa(auth: AuthInternal, request: StartTotpMfaEnrollmentRequest): Promise<StartTotpMfaEnrollmentResponse>;
|
|
82
|
+
export interface TotpVerificationInfo {
|
|
83
|
+
sessionInfo: string;
|
|
84
|
+
verificationCode: string;
|
|
85
|
+
}
|
|
86
|
+
export interface FinalizeTotpMfaEnrollmentRequest {
|
|
87
|
+
idToken: string;
|
|
88
|
+
totpVerificationInfo: TotpVerificationInfo;
|
|
89
|
+
displayName?: string | null;
|
|
90
|
+
tenantId?: string;
|
|
91
|
+
}
|
|
92
|
+
export interface FinalizeTotpMfaEnrollmentResponse extends FinalizeMfaResponse {
|
|
93
|
+
}
|
|
94
|
+
export declare function finalizeEnrollTotpMfa(auth: AuthInternal, request: FinalizeTotpMfaEnrollmentRequest): Promise<FinalizeTotpMfaEnrollmentResponse>;
|
|
61
95
|
export interface WithdrawMfaRequest {
|
|
62
96
|
idToken: string;
|
|
63
97
|
mfaEnrollmentId: string;
|
|
@@ -49,9 +49,20 @@ export interface FinalizePhoneMfaSignInRequest {
|
|
|
49
49
|
phoneVerificationInfo: SignInWithPhoneNumberRequest;
|
|
50
50
|
tenantId?: string;
|
|
51
51
|
}
|
|
52
|
+
export interface FinalizeTotpMfaSignInRequest {
|
|
53
|
+
mfaPendingCredential: string;
|
|
54
|
+
totpVerificationInfo: {
|
|
55
|
+
verificationCode: string;
|
|
56
|
+
};
|
|
57
|
+
tenantId?: string;
|
|
58
|
+
mfaEnrollmentId: string;
|
|
59
|
+
}
|
|
52
60
|
export interface FinalizePhoneMfaSignInResponse extends FinalizeMfaResponse {
|
|
53
61
|
}
|
|
62
|
+
export interface FinalizeTotpMfaSignInResponse extends FinalizeMfaResponse {
|
|
63
|
+
}
|
|
54
64
|
export declare function finalizeSignInPhoneMfa(auth: Auth, request: FinalizePhoneMfaSignInRequest): Promise<FinalizePhoneMfaSignInResponse>;
|
|
65
|
+
export declare function finalizeSignInTotpMfa(auth: Auth, request: FinalizeTotpMfaSignInRequest): Promise<FinalizeTotpMfaSignInResponse>;
|
|
55
66
|
/**
|
|
56
67
|
* @internal
|
|
57
68
|
*/
|
|
@@ -86,6 +86,7 @@ export declare const enum AuthErrorCode {
|
|
|
86
86
|
MISSING_MFA_INFO = "missing-multi-factor-info",
|
|
87
87
|
MISSING_MFA_SESSION = "missing-multi-factor-session",
|
|
88
88
|
MISSING_PHONE_NUMBER = "missing-phone-number",
|
|
89
|
+
MISSING_PASSWORD = "missing-password",
|
|
89
90
|
MISSING_SESSION_INFO = "missing-verification-id",
|
|
90
91
|
MODULE_DESTROYED = "app-deleted",
|
|
91
92
|
NEED_CONFIRMATION = "account-exists-with-different-credential",
|
|
@@ -43,6 +43,7 @@ export declare function setPersistence(auth: Auth, persistence: Persistence): Pr
|
|
|
43
43
|
*
|
|
44
44
|
* @remarks
|
|
45
45
|
* This includes sign-in, sign-out, and token refresh events.
|
|
46
|
+
* This will not be triggered automatically upon ID token expiration. Use {@link User.getIdToken} to refresh the ID token.
|
|
46
47
|
*
|
|
47
48
|
* @param auth - The {@link Auth} instance.
|
|
48
49
|
* @param nextOrObserver - callback triggered on change.
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Google LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { TotpMultiFactorAssertion, MultiFactorSession } from '../../model/public_types';
|
|
18
|
+
import { AuthInternal } from '../../model/auth';
|
|
19
|
+
import { StartTotpMfaEnrollmentResponse, TotpVerificationInfo } from '../../api/account_management/mfa';
|
|
20
|
+
import { FinalizeMfaResponse } from '../../api/authentication/mfa';
|
|
21
|
+
import { MultiFactorAssertionImpl } from '../../mfa/mfa_assertion';
|
|
22
|
+
/**
|
|
23
|
+
* Provider for generating a {@link TotpMultiFactorAssertion}.
|
|
24
|
+
*
|
|
25
|
+
* @public
|
|
26
|
+
*/
|
|
27
|
+
export declare class TotpMultiFactorGenerator {
|
|
28
|
+
/**
|
|
29
|
+
* Provides a {@link TotpMultiFactorAssertion} to confirm ownership of
|
|
30
|
+
* the TOTP (time-based one-time password) second factor.
|
|
31
|
+
* This assertion is used to complete enrollment in TOTP second factor.
|
|
32
|
+
*
|
|
33
|
+
* @param secret A {@link TotpSecret} containing the shared secret key and other TOTP parameters.
|
|
34
|
+
* @param oneTimePassword One-time password from TOTP App.
|
|
35
|
+
* @returns A {@link TotpMultiFactorAssertion} which can be used with
|
|
36
|
+
* {@link MultiFactorUser.enroll}.
|
|
37
|
+
*/
|
|
38
|
+
static assertionForEnrollment(secret: TotpSecret, oneTimePassword: string): TotpMultiFactorAssertion;
|
|
39
|
+
/**
|
|
40
|
+
* Provides a {@link TotpMultiFactorAssertion} to confirm ownership of the TOTP second factor.
|
|
41
|
+
* This assertion is used to complete signIn with TOTP as the second factor.
|
|
42
|
+
*
|
|
43
|
+
* @param enrollmentId identifies the enrolled TOTP second factor.
|
|
44
|
+
* @param oneTimePassword One-time password from TOTP App.
|
|
45
|
+
* @returns A {@link TotpMultiFactorAssertion} which can be used with
|
|
46
|
+
* {@link MultiFactorResolver.resolveSignIn}.
|
|
47
|
+
*/
|
|
48
|
+
static assertionForSignIn(enrollmentId: string, oneTimePassword: string): TotpMultiFactorAssertion;
|
|
49
|
+
/**
|
|
50
|
+
* Returns a promise to {@link TotpSecret} which contains the TOTP shared secret key and other parameters.
|
|
51
|
+
* Creates a TOTP secret as part of enrolling a TOTP second factor.
|
|
52
|
+
* Used for generating a QR code URL or inputting into a TOTP app.
|
|
53
|
+
* This method uses the auth instance corresponding to the user in the multiFactorSession.
|
|
54
|
+
*
|
|
55
|
+
* @param session The {@link MultiFactorSession} that the user is part of.
|
|
56
|
+
* @returns A promise to {@link TotpSecret}.
|
|
57
|
+
*/
|
|
58
|
+
static generateSecret(session: MultiFactorSession): Promise<TotpSecret>;
|
|
59
|
+
/**
|
|
60
|
+
* The identifier of the TOTP second factor: `totp`.
|
|
61
|
+
*/
|
|
62
|
+
static FACTOR_ID: 'totp';
|
|
63
|
+
}
|
|
64
|
+
export declare class TotpMultiFactorAssertionImpl extends MultiFactorAssertionImpl implements TotpMultiFactorAssertion {
|
|
65
|
+
readonly otp: string;
|
|
66
|
+
readonly enrollmentId?: string | undefined;
|
|
67
|
+
readonly secret?: TotpSecret | undefined;
|
|
68
|
+
constructor(otp: string, enrollmentId?: string | undefined, secret?: TotpSecret | undefined);
|
|
69
|
+
/** @internal */
|
|
70
|
+
static _fromSecret(secret: TotpSecret, otp: string): TotpMultiFactorAssertionImpl;
|
|
71
|
+
/** @internal */
|
|
72
|
+
static _fromEnrollmentId(enrollmentId: string, otp: string): TotpMultiFactorAssertionImpl;
|
|
73
|
+
/** @internal */
|
|
74
|
+
_finalizeEnroll(auth: AuthInternal, idToken: string, displayName?: string | null): Promise<FinalizeMfaResponse>;
|
|
75
|
+
/** @internal */
|
|
76
|
+
_finalizeSignIn(auth: AuthInternal, mfaPendingCredential: string): Promise<FinalizeMfaResponse>;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Provider for generating a {@link TotpMultiFactorAssertion}.
|
|
80
|
+
*
|
|
81
|
+
* Stores the shared secret key and other parameters to generate time-based OTPs.
|
|
82
|
+
* Implements methods to retrieve the shared secret key and generate a QR code URL.
|
|
83
|
+
* @public
|
|
84
|
+
*/
|
|
85
|
+
export declare class TotpSecret {
|
|
86
|
+
private readonly sessionInfo;
|
|
87
|
+
private readonly auth;
|
|
88
|
+
/**
|
|
89
|
+
* Shared secret key/seed used for enrolling in TOTP MFA and generating OTPs.
|
|
90
|
+
*/
|
|
91
|
+
readonly secretKey: string;
|
|
92
|
+
/**
|
|
93
|
+
* Hashing algorithm used.
|
|
94
|
+
*/
|
|
95
|
+
readonly hashingAlgorithm: string;
|
|
96
|
+
/**
|
|
97
|
+
* Length of the one-time passwords to be generated.
|
|
98
|
+
*/
|
|
99
|
+
readonly codeLength: number;
|
|
100
|
+
/**
|
|
101
|
+
* The interval (in seconds) when the OTP codes should change.
|
|
102
|
+
*/
|
|
103
|
+
readonly codeIntervalSeconds: number;
|
|
104
|
+
/**
|
|
105
|
+
* The timestamp (UTC string) by which TOTP enrollment should be completed.
|
|
106
|
+
*/
|
|
107
|
+
readonly enrollmentCompletionDeadline: string;
|
|
108
|
+
private constructor();
|
|
109
|
+
/** @internal */
|
|
110
|
+
static _fromStartTotpMfaEnrollmentResponse(response: StartTotpMfaEnrollmentResponse, auth: AuthInternal): TotpSecret;
|
|
111
|
+
/** @internal */
|
|
112
|
+
_makeTotpVerificationInfo(otp: string): TotpVerificationInfo;
|
|
113
|
+
/**
|
|
114
|
+
* Returns a QR code URL as described in
|
|
115
|
+
* https://github.com/google/google-authenticator/wiki/Key-Uri-Format
|
|
116
|
+
* This can be displayed to the user as a QR code to be scanned into a TOTP app like Google Authenticator.
|
|
117
|
+
* If the optional parameters are unspecified, an accountName of <userEmail> and issuer of <firebaseAppName> are used.
|
|
118
|
+
*
|
|
119
|
+
* @param accountName the name of the account/app along with a user identifier.
|
|
120
|
+
* @param issuer issuer of the TOTP (likely the app name).
|
|
121
|
+
* @returns A QR code URL string.
|
|
122
|
+
*/
|
|
123
|
+
generateQrCodeUrl(accountName?: string, issuer?: string): string;
|
|
124
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Google LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
export {};
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
-
import { FactorId, MultiFactorInfo, PhoneMultiFactorInfo } from '../model/public_types';
|
|
17
|
+
import { FactorId, MultiFactorInfo, PhoneMultiFactorInfo, TotpMultiFactorInfo } from '../model/public_types';
|
|
18
18
|
import { MfaEnrollment } from '../api/account_management/mfa';
|
|
19
19
|
import { AuthInternal } from '../model/auth';
|
|
20
20
|
export declare abstract class MultiFactorInfoImpl implements MultiFactorInfo {
|
|
@@ -30,3 +30,7 @@ export declare class PhoneMultiFactorInfoImpl extends MultiFactorInfoImpl implem
|
|
|
30
30
|
private constructor();
|
|
31
31
|
static _fromServerResponse(_auth: AuthInternal, enrollment: MfaEnrollment): PhoneMultiFactorInfoImpl;
|
|
32
32
|
}
|
|
33
|
+
export declare class TotpMultiFactorInfoImpl extends MultiFactorInfoImpl implements TotpMultiFactorInfo {
|
|
34
|
+
private constructor();
|
|
35
|
+
static _fromServerResponse(_auth: AuthInternal, enrollment: MfaEnrollment): TotpMultiFactorInfoImpl;
|
|
36
|
+
}
|
|
@@ -502,7 +502,8 @@ export interface AuthProvider {
|
|
|
502
502
|
*/
|
|
503
503
|
export declare const enum FactorId {
|
|
504
504
|
/** Phone as second factor */
|
|
505
|
-
PHONE = "phone"
|
|
505
|
+
PHONE = "phone",
|
|
506
|
+
TOTP = "totp"
|
|
506
507
|
}
|
|
507
508
|
/**
|
|
508
509
|
* A result from a phone number sign-in, link, or reauthenticate call.
|
|
@@ -609,6 +610,13 @@ export interface PhoneMultiFactorInfo extends MultiFactorInfo {
|
|
|
609
610
|
/** The phone number associated with the current second factor. */
|
|
610
611
|
readonly phoneNumber: string;
|
|
611
612
|
}
|
|
613
|
+
/**
|
|
614
|
+
* The subclass of the {@link MultiFactorInfo} interface for TOTP
|
|
615
|
+
* second factors. The `factorId` of this second factor is {@link FactorId}.TOTP.
|
|
616
|
+
* @public
|
|
617
|
+
*/
|
|
618
|
+
export interface TotpMultiFactorInfo extends MultiFactorInfo {
|
|
619
|
+
}
|
|
612
620
|
/**
|
|
613
621
|
* The class used to facilitate recovery from {@link MultiFactorError} when a user needs to
|
|
614
622
|
* provide a second factor to sign in.
|
|
@@ -1160,3 +1168,12 @@ export interface Dependencies {
|
|
|
1160
1168
|
*/
|
|
1161
1169
|
errorMap?: AuthErrorMap;
|
|
1162
1170
|
}
|
|
1171
|
+
/**
|
|
1172
|
+
* The class for asserting ownership of a TOTP second factor. Provided by
|
|
1173
|
+
* {@link TotpMultiFactorGenerator.assertionForEnrollment} and
|
|
1174
|
+
* {@link TotpMultiFactorGenerator.assertionForSignIn}.
|
|
1175
|
+
*
|
|
1176
|
+
* @public
|
|
1177
|
+
*/
|
|
1178
|
+
export interface TotpMultiFactorAssertion extends MultiFactorAssertion {
|
|
1179
|
+
}
|
|
@@ -18,3 +18,6 @@ import { Auth } from '../../../src/model/public_types';
|
|
|
18
18
|
export declare function randomEmail(): string;
|
|
19
19
|
export declare function getTestInstance(requireEmulator?: boolean): Auth;
|
|
20
20
|
export declare function cleanUpTestInstance(auth: Auth): Promise<void>;
|
|
21
|
+
export declare function getTotpCode(sharedSecretKey: string, periodSec: number, verificationCodeLength: number, timestamp: Date): string;
|
|
22
|
+
export declare const email = "totpuser-donotdelete@test.com";
|
|
23
|
+
export declare const incorrectTotpCode = "1000000";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Google LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
export {};
|
package/dist/index.d.ts
CHANGED
|
@@ -32,5 +32,6 @@ import { signInWithRedirect, linkWithRedirect, reauthenticateWithRedirect, getRe
|
|
|
32
32
|
import { RecaptchaVerifier } from './src/platform_browser/recaptcha/recaptcha_verifier';
|
|
33
33
|
import { browserPopupRedirectResolver } from './src/platform_browser/popup_redirect';
|
|
34
34
|
import { PhoneMultiFactorGenerator } from './src/platform_browser/mfa/assertions/phone';
|
|
35
|
+
import { TotpMultiFactorGenerator, TotpSecret } from './src/mfa/assertions/totp';
|
|
35
36
|
import { getAuth } from './src/platform_browser';
|
|
36
|
-
export { browserLocalPersistence, browserSessionPersistence, indexedDBLocalPersistence, PhoneAuthProvider, signInWithPhoneNumber, linkWithPhoneNumber, reauthenticateWithPhoneNumber, updatePhoneNumber, signInWithPopup, linkWithPopup, reauthenticateWithPopup, signInWithRedirect, linkWithRedirect, reauthenticateWithRedirect, getRedirectResult, RecaptchaVerifier, browserPopupRedirectResolver, PhoneMultiFactorGenerator, getAuth };
|
|
37
|
+
export { browserLocalPersistence, browserSessionPersistence, indexedDBLocalPersistence, PhoneAuthProvider, signInWithPhoneNumber, linkWithPhoneNumber, reauthenticateWithPhoneNumber, updatePhoneNumber, signInWithPopup, linkWithPopup, reauthenticateWithPopup, signInWithRedirect, linkWithRedirect, reauthenticateWithRedirect, getRedirectResult, RecaptchaVerifier, browserPopupRedirectResolver, PhoneMultiFactorGenerator, TotpMultiFactorGenerator, TotpSecret, getAuth };
|
|
@@ -114,6 +114,7 @@ function _debugErrorMap() {
|
|
|
114
114
|
_a["missing-or-invalid-nonce" /* AuthErrorCode.MISSING_OR_INVALID_NONCE */] = 'The request does not contain a valid nonce. This can occur if the ' +
|
|
115
115
|
'SHA-256 hash of the provided raw nonce does not match the hashed nonce ' +
|
|
116
116
|
'in the ID token payload.',
|
|
117
|
+
_a["missing-password" /* AuthErrorCode.MISSING_PASSWORD */] = 'A non-empty password must be provided',
|
|
117
118
|
_a["missing-multi-factor-info" /* AuthErrorCode.MISSING_MFA_INFO */] = 'No second factor identifier is provided.',
|
|
118
119
|
_a["missing-multi-factor-session" /* AuthErrorCode.MISSING_MFA_SESSION */] = 'The request is missing proof of first factor successful sign-in.',
|
|
119
120
|
_a["missing-phone-number" /* AuthErrorCode.MISSING_PHONE_NUMBER */] = 'To send verification codes, provide a phone number for the recipient.',
|
|
@@ -523,7 +524,7 @@ function _initializeAuthInstance(auth, deps) {
|
|
|
523
524
|
}
|
|
524
525
|
|
|
525
526
|
var name = "@firebase/auth";
|
|
526
|
-
var version = "0.21.
|
|
527
|
+
var version = "0.21.6-canary.45a55330e";
|
|
527
528
|
|
|
528
529
|
/**
|
|
529
530
|
* @license
|
|
@@ -905,7 +906,7 @@ var SERVER_ERROR_MAP = (_a$1 = {},
|
|
|
905
906
|
// Sign in with email and password errors (some apply to sign up too).
|
|
906
907
|
_a$1["INVALID_PASSWORD" /* ServerError.INVALID_PASSWORD */] = "wrong-password" /* AuthErrorCode.INVALID_PASSWORD */,
|
|
907
908
|
// This can only happen if the SDK sends a bad request.
|
|
908
|
-
_a$1["MISSING_PASSWORD" /* ServerError.MISSING_PASSWORD */] = "
|
|
909
|
+
_a$1["MISSING_PASSWORD" /* ServerError.MISSING_PASSWORD */] = "missing-password" /* AuthErrorCode.MISSING_PASSWORD */,
|
|
909
910
|
// Sign up with email and password errors.
|
|
910
911
|
_a$1["EMAIL_EXISTS" /* ServerError.EMAIL_EXISTS */] = "email-already-in-use" /* AuthErrorCode.EMAIL_EXISTS */,
|
|
911
912
|
_a$1["PASSWORD_LOGIN_DISABLED" /* ServerError.PASSWORD_LOGIN_DISABLED */] = "operation-not-allowed" /* AuthErrorCode.OPERATION_NOT_ALLOWED */,
|
|
@@ -1074,7 +1075,10 @@ function _performFetchWithErrorHandling(auth, customErrorMap, fetchFn) {
|
|
|
1074
1075
|
if (e_1 instanceof FirebaseError) {
|
|
1075
1076
|
throw e_1;
|
|
1076
1077
|
}
|
|
1077
|
-
|
|
1078
|
+
// Changing this to a different error code will log user out when there is a network error
|
|
1079
|
+
// because we treat any error other than NETWORK_REQUEST_FAILED as token is invalid.
|
|
1080
|
+
// https://github.com/firebase/firebase-js-sdk/blob/4fbc73610d70be4e0852e7de63a39cb7897e8546/packages/auth/src/core/auth/auth_impl.ts#L309-L316
|
|
1081
|
+
_fail(auth, "network-request-failed" /* AuthErrorCode.NETWORK_REQUEST_FAILED */, { 'message': String(e_1) });
|
|
1078
1082
|
return [3 /*break*/, 5];
|
|
1079
1083
|
case 5: return [2 /*return*/];
|
|
1080
1084
|
}
|
|
@@ -4174,7 +4178,8 @@ var indexedDBLocalPersistence = IndexedDBLocalPersistence;
|
|
|
4174
4178
|
*/
|
|
4175
4179
|
var FactorId = {
|
|
4176
4180
|
/** Phone as second factor */
|
|
4177
|
-
PHONE: 'phone'
|
|
4181
|
+
PHONE: 'phone',
|
|
4182
|
+
TOTP: 'totp'
|
|
4178
4183
|
};
|
|
4179
4184
|
/**
|
|
4180
4185
|
* Enumeration of supported providers.
|
|
@@ -6718,6 +6723,9 @@ var MultiFactorInfoImpl = /** @class */ (function () {
|
|
|
6718
6723
|
if ('phoneInfo' in enrollment) {
|
|
6719
6724
|
return PhoneMultiFactorInfoImpl._fromServerResponse(auth, enrollment);
|
|
6720
6725
|
}
|
|
6726
|
+
else if ('totpInfo' in enrollment) {
|
|
6727
|
+
return TotpMultiFactorInfoImpl._fromServerResponse(auth, enrollment);
|
|
6728
|
+
}
|
|
6721
6729
|
return _fail(auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
|
|
6722
6730
|
};
|
|
6723
6731
|
return MultiFactorInfoImpl;
|
|
@@ -6733,6 +6741,16 @@ var PhoneMultiFactorInfoImpl = /** @class */ (function (_super) {
|
|
|
6733
6741
|
return new PhoneMultiFactorInfoImpl(enrollment);
|
|
6734
6742
|
};
|
|
6735
6743
|
return PhoneMultiFactorInfoImpl;
|
|
6744
|
+
}(MultiFactorInfoImpl));
|
|
6745
|
+
var TotpMultiFactorInfoImpl = /** @class */ (function (_super) {
|
|
6746
|
+
__extends(TotpMultiFactorInfoImpl, _super);
|
|
6747
|
+
function TotpMultiFactorInfoImpl(response) {
|
|
6748
|
+
return _super.call(this, "totp" /* FactorId.TOTP */, response) || this;
|
|
6749
|
+
}
|
|
6750
|
+
TotpMultiFactorInfoImpl._fromServerResponse = function (_auth, enrollment) {
|
|
6751
|
+
return new TotpMultiFactorInfoImpl(enrollment);
|
|
6752
|
+
};
|
|
6753
|
+
return TotpMultiFactorInfoImpl;
|
|
6736
6754
|
}(MultiFactorInfoImpl));
|
|
6737
6755
|
|
|
6738
6756
|
/**
|
|
@@ -7699,6 +7717,7 @@ function setPersistence(auth, persistence) {
|
|
|
7699
7717
|
*
|
|
7700
7718
|
* @remarks
|
|
7701
7719
|
* This includes sign-in, sign-out, and token refresh events.
|
|
7720
|
+
* This will not be triggered automatically upon ID token expiration. Use {@link User.getIdToken} to refresh the ID token.
|
|
7702
7721
|
*
|
|
7703
7722
|
* @param auth - The {@link Auth} instance.
|
|
7704
7723
|
* @param nextOrObserver - callback triggered on change.
|