@firebase/auth 1.7.9 → 1.8.0
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/README.md +32 -1
- package/dist/auth-public.d.ts +22 -10
- package/dist/auth.d.ts +22 -10
- package/dist/browser-cjs/{index-e2e765e6.js → index-b60d3212.js} +393 -176
- package/dist/browser-cjs/index-b60d3212.js.map +1 -0
- package/dist/browser-cjs/index.js +1 -1
- package/dist/browser-cjs/internal.js +1 -1
- package/dist/browser-cjs/src/api/account_management/mfa.d.ts +5 -1
- package/dist/browser-cjs/src/api/authentication/mfa.d.ts +5 -1
- package/dist/browser-cjs/src/api/authentication/sms.d.ts +5 -1
- package/dist/browser-cjs/src/api/index.d.ts +7 -3
- package/dist/browser-cjs/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/browser-cjs/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/cordova/auth-cordova-public.d.ts +7 -0
- package/dist/cordova/auth-cordova.d.ts +7 -0
- package/dist/cordova/index.js +6 -7
- package/dist/cordova/index.js.map +1 -1
- package/dist/cordova/internal.js +660 -985
- package/dist/cordova/internal.js.map +1 -1
- package/dist/cordova/popup_redirect-6fcd583a.js +9635 -0
- package/dist/cordova/popup_redirect-6fcd583a.js.map +1 -0
- package/dist/cordova/src/api/account_management/mfa.d.ts +5 -1
- package/dist/cordova/src/api/authentication/mfa.d.ts +5 -1
- package/dist/cordova/src/api/authentication/sms.d.ts +5 -1
- package/dist/cordova/src/api/index.d.ts +7 -3
- package/dist/cordova/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/cordova/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/cordova/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/cordova/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/{esm5/src/api/account_management/mfa.test.d.ts → cordova/test/integration/flows/recaptcha_enterprise.test.d.ts} +1 -1
- package/dist/esm2017/{index-68602d24.js → index-a7d5cfcc.js} +393 -176
- package/dist/esm2017/index-a7d5cfcc.js.map +1 -0
- package/dist/esm2017/index.js +1 -1
- package/dist/esm2017/internal.js +2 -2
- package/dist/esm2017/src/api/account_management/mfa.d.ts +5 -1
- package/dist/esm2017/src/api/authentication/mfa.d.ts +5 -1
- package/dist/esm2017/src/api/authentication/sms.d.ts +5 -1
- package/dist/esm2017/src/api/index.d.ts +7 -3
- package/dist/esm2017/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/esm2017/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/esm2017/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/esm2017/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/{esm5/src/api/account_management/email_and_password.test.d.ts → esm2017/test/integration/flows/recaptcha_enterprise.test.d.ts} +1 -1
- package/dist/index.webworker.js +7912 -0
- package/dist/index.webworker.js.map +1 -0
- package/dist/node/index.js +2 -3
- package/dist/node/index.js.map +1 -1
- package/dist/node/internal.js +555 -844
- package/dist/node/internal.js.map +1 -1
- package/dist/node/src/api/account_management/mfa.d.ts +5 -1
- package/dist/node/src/api/authentication/mfa.d.ts +5 -1
- package/dist/node/src/api/authentication/sms.d.ts +5 -1
- package/dist/node/src/api/index.d.ts +7 -3
- package/dist/node/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/node/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/node/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/node/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/node/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
- package/dist/node/totp-ab108bed.js +7582 -0
- package/dist/node/totp-ab108bed.js.map +1 -0
- package/dist/node-esm/index.js +1 -2
- package/dist/node-esm/index.js.map +1 -1
- package/dist/node-esm/internal.js +2 -3
- package/dist/node-esm/internal.js.map +1 -1
- package/dist/node-esm/src/api/account_management/mfa.d.ts +5 -1
- package/dist/node-esm/src/api/authentication/mfa.d.ts +5 -1
- package/dist/node-esm/src/api/authentication/sms.d.ts +5 -1
- package/dist/node-esm/src/api/index.d.ts +7 -3
- package/dist/node-esm/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/node-esm/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/node-esm/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/node-esm/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/{esm5/scripts/run_node_tests.d.ts → node-esm/test/integration/flows/recaptcha_enterprise.test.d.ts} +1 -1
- package/dist/node-esm/{totp-219bb96f.js → totp-f311e20a.js} +170 -33
- package/dist/node-esm/totp-f311e20a.js.map +1 -0
- package/dist/rn/index-4d73adbf.js +8575 -0
- package/dist/rn/index-4d73adbf.js.map +1 -0
- package/dist/rn/index.js +45 -55
- package/dist/rn/index.js.map +1 -1
- package/dist/rn/internal.js +1195 -1890
- package/dist/rn/internal.js.map +1 -1
- package/dist/rn/src/api/account_management/mfa.d.ts +5 -1
- package/dist/rn/src/api/authentication/mfa.d.ts +5 -1
- package/dist/rn/src/api/authentication/sms.d.ts +5 -1
- package/dist/rn/src/api/index.d.ts +7 -3
- package/dist/rn/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/rn/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/rn/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/rn/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/rn/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
- package/dist/src/api/account_management/mfa.d.ts +5 -1
- package/dist/src/api/authentication/mfa.d.ts +5 -1
- package/dist/src/api/authentication/sms.d.ts +5 -1
- package/dist/src/api/index.d.ts +7 -3
- package/dist/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
- package/dist/web-extension-cjs/index.js +1 -1
- package/dist/web-extension-cjs/internal.js +115 -147
- package/dist/web-extension-cjs/internal.js.map +1 -1
- package/dist/web-extension-cjs/{register-674a8250.js → register-17c71bd5.js} +284 -31
- package/dist/web-extension-cjs/register-17c71bd5.js.map +1 -0
- package/dist/web-extension-cjs/src/api/account_management/mfa.d.ts +5 -1
- package/dist/web-extension-cjs/src/api/authentication/mfa.d.ts +5 -1
- package/dist/web-extension-cjs/src/api/authentication/sms.d.ts +5 -1
- package/dist/web-extension-cjs/src/api/index.d.ts +7 -3
- package/dist/web-extension-cjs/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/web-extension-cjs/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/web-extension-cjs/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/web-extension-cjs/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/web-extension-cjs/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
- package/dist/web-extension-esm2017/auth-web-extension-public.d.ts +7 -0
- package/dist/web-extension-esm2017/auth-web-extension.d.ts +7 -0
- package/dist/web-extension-esm2017/index.js +2 -2
- package/dist/web-extension-esm2017/internal.js +115 -147
- package/dist/web-extension-esm2017/internal.js.map +1 -1
- package/dist/web-extension-esm2017/{register-428f8789.js → register-77f1d56a.js} +281 -32
- package/dist/web-extension-esm2017/register-77f1d56a.js.map +1 -0
- package/dist/web-extension-esm2017/src/api/account_management/mfa.d.ts +5 -1
- package/dist/web-extension-esm2017/src/api/authentication/mfa.d.ts +5 -1
- package/dist/web-extension-esm2017/src/api/authentication/sms.d.ts +5 -1
- package/dist/web-extension-esm2017/src/api/index.d.ts +7 -3
- package/dist/web-extension-esm2017/src/platform_browser/providers/phone.d.ts +7 -5
- package/dist/web-extension-esm2017/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
- package/dist/web-extension-esm2017/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
- package/dist/web-extension-esm2017/src/platform_browser/strategies/phone.d.ts +10 -6
- package/dist/web-extension-esm2017/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
- package/internal/package.json +5 -3
- package/package.json +10 -11
- package/dist/browser-cjs/index-e2e765e6.js.map +0 -1
- package/dist/cordova/popup_redirect-abcbab4c.js +0 -11249
- package/dist/cordova/popup_redirect-abcbab4c.js.map +0 -1
- package/dist/esm2017/index-68602d24.js.map +0 -1
- package/dist/esm5/index-c0803b14.js +0 -12741
- package/dist/esm5/index-c0803b14.js.map +0 -1
- package/dist/esm5/index.cordova.d.ts +0 -32
- package/dist/esm5/index.d.ts +0 -37
- package/dist/esm5/index.doc.d.ts +0 -24
- package/dist/esm5/index.js +0 -7
- package/dist/esm5/index.js.map +0 -1
- package/dist/esm5/index.node.d.ts +0 -17
- package/dist/esm5/index.rn.d.ts +0 -40
- package/dist/esm5/index.shared.d.ts +0 -19
- package/dist/esm5/index.web-extension.d.ts +0 -31
- package/dist/esm5/index.webworker.d.ts +0 -21
- package/dist/esm5/internal/index.d.ts +0 -42
- package/dist/esm5/internal.js +0 -682
- package/dist/esm5/internal.js.map +0 -1
- package/dist/esm5/src/api/account_management/account.d.ts +0 -59
- package/dist/esm5/src/api/account_management/account.test.d.ts +0 -17
- package/dist/esm5/src/api/account_management/email_and_password.d.ts +0 -49
- package/dist/esm5/src/api/account_management/mfa.d.ts +0 -103
- package/dist/esm5/src/api/account_management/profile.d.ts +0 -29
- package/dist/esm5/src/api/account_management/profile.test.d.ts +0 -17
- package/dist/esm5/src/api/authentication/create_auth_uri.d.ts +0 -26
- package/dist/esm5/src/api/authentication/create_auth_uri.test.d.ts +0 -17
- package/dist/esm5/src/api/authentication/custom_token.d.ts +0 -26
- package/dist/esm5/src/api/authentication/custom_token.test.d.ts +0 -17
- package/dist/esm5/src/api/authentication/email_and_password.d.ts +0 -85
- package/dist/esm5/src/api/authentication/email_and_password.test.d.ts +0 -17
- package/dist/esm5/src/api/authentication/email_link.d.ts +0 -32
- package/dist/esm5/src/api/authentication/email_link.test.d.ts +0 -17
- package/dist/esm5/src/api/authentication/idp.d.ts +0 -40
- package/dist/esm5/src/api/authentication/idp.test.d.ts +0 -17
- package/dist/esm5/src/api/authentication/mfa.d.ts +0 -69
- package/dist/esm5/src/api/authentication/mfa.test.d.ts +0 -17
- package/dist/esm5/src/api/authentication/recaptcha.d.ts +0 -34
- package/dist/esm5/src/api/authentication/recaptcha.test.d.ts +0 -17
- package/dist/esm5/src/api/authentication/sign_up.d.ts +0 -34
- package/dist/esm5/src/api/authentication/sign_up.test.d.ts +0 -17
- package/dist/esm5/src/api/authentication/sms.d.ts +0 -50
- package/dist/esm5/src/api/authentication/sms.test.d.ts +0 -17
- package/dist/esm5/src/api/authentication/token.d.ts +0 -37
- package/dist/esm5/src/api/authentication/token.test.d.ts +0 -17
- package/dist/esm5/src/api/errors.d.ts +0 -128
- package/dist/esm5/src/api/index.d.ts +0 -97
- package/dist/esm5/src/api/index.test.d.ts +0 -17
- package/dist/esm5/src/api/password_policy/get_password_policy.d.ts +0 -48
- package/dist/esm5/src/api/password_policy/get_password_policy.test.d.ts +0 -17
- package/dist/esm5/src/api/project_config/get_project_config.d.ts +0 -25
- package/dist/esm5/src/api/project_config/get_project_config.test.d.ts +0 -17
- package/dist/esm5/src/core/action_code_url.d.ts +0 -73
- package/dist/esm5/src/core/action_code_url.test.d.ts +0 -17
- package/dist/esm5/src/core/auth/auth_event_manager.d.ts +0 -34
- package/dist/esm5/src/core/auth/auth_event_manager.test.d.ts +0 -17
- package/dist/esm5/src/core/auth/auth_impl.d.ts +0 -130
- package/dist/esm5/src/core/auth/auth_impl.test.d.ts +0 -17
- package/dist/esm5/src/core/auth/emulator.d.ts +0 -42
- package/dist/esm5/src/core/auth/emulator.test.d.ts +0 -17
- package/dist/esm5/src/core/auth/firebase_internal.d.ts +0 -35
- package/dist/esm5/src/core/auth/firebase_internal.test.d.ts +0 -17
- package/dist/esm5/src/core/auth/initialize.d.ts +0 -46
- package/dist/esm5/src/core/auth/initialize.test.d.ts +0 -17
- package/dist/esm5/src/core/auth/middleware.d.ts +0 -25
- package/dist/esm5/src/core/auth/middleware.test.d.ts +0 -17
- package/dist/esm5/src/core/auth/password_policy_impl.d.ts +0 -59
- package/dist/esm5/src/core/auth/password_policy_impl.test.d.ts +0 -17
- package/dist/esm5/src/core/auth/register.d.ts +0 -23
- package/dist/esm5/src/core/credentials/auth_credential.d.ts +0 -75
- package/dist/esm5/src/core/credentials/email.d.ts +0 -60
- package/dist/esm5/src/core/credentials/email.test.d.ts +0 -17
- package/dist/esm5/src/core/credentials/index.d.ts +0 -23
- package/dist/esm5/src/core/credentials/oauth.d.ts +0 -81
- package/dist/esm5/src/core/credentials/oauth.test.d.ts +0 -17
- package/dist/esm5/src/core/credentials/phone.d.ts +0 -52
- package/dist/esm5/src/core/credentials/phone.test.d.ts +0 -17
- package/dist/esm5/src/core/credentials/saml.d.ts +0 -52
- package/dist/esm5/src/core/credentials/saml.test.d.ts +0 -17
- package/dist/esm5/src/core/errors.d.ts +0 -325
- package/dist/esm5/src/core/errors.test.d.ts +0 -17
- package/dist/esm5/src/core/index.d.ts +0 -230
- package/dist/esm5/src/core/persistence/in_memory.d.ts +0 -35
- package/dist/esm5/src/core/persistence/in_memory.test.d.ts +0 -17
- package/dist/esm5/src/core/persistence/index.d.ts +0 -41
- package/dist/esm5/src/core/persistence/persistence_user_manager.d.ts +0 -45
- package/dist/esm5/src/core/persistence/persistence_user_manager.test.d.ts +0 -17
- package/dist/esm5/src/core/providers/email.d.ts +0 -83
- package/dist/esm5/src/core/providers/email.test.d.ts +0 -17
- package/dist/esm5/src/core/providers/facebook.d.ts +0 -93
- package/dist/esm5/src/core/providers/facebook.test.d.ts +0 -17
- package/dist/esm5/src/core/providers/federated.d.ts +0 -64
- package/dist/esm5/src/core/providers/federated.test.d.ts +0 -17
- package/dist/esm5/src/core/providers/github.d.ts +0 -89
- package/dist/esm5/src/core/providers/github.test.d.ts +0 -17
- package/dist/esm5/src/core/providers/google.d.ts +0 -96
- package/dist/esm5/src/core/providers/google.test.d.ts +0 -17
- package/dist/esm5/src/core/providers/oauth.d.ts +0 -151
- package/dist/esm5/src/core/providers/oauth.test.d.ts +0 -17
- package/dist/esm5/src/core/providers/saml.d.ts +0 -62
- package/dist/esm5/src/core/providers/saml.test.d.ts +0 -17
- package/dist/esm5/src/core/providers/twitter.d.ts +0 -103
- package/dist/esm5/src/core/providers/twitter.test.d.ts +0 -17
- package/dist/esm5/src/core/strategies/abstract_popup_redirect_operation.d.ts +0 -44
- package/dist/esm5/src/core/strategies/abstract_popup_redirect_operation.test.d.ts +0 -17
- package/dist/esm5/src/core/strategies/action_code_settings.d.ts +0 -19
- package/dist/esm5/src/core/strategies/action_code_settings.test.d.ts +0 -17
- package/dist/esm5/src/core/strategies/anonymous.d.ts +0 -32
- package/dist/esm5/src/core/strategies/anonymous.test.d.ts +0 -17
- package/dist/esm5/src/core/strategies/credential.d.ts +0 -64
- package/dist/esm5/src/core/strategies/credential.test.d.ts +0 -17
- package/dist/esm5/src/core/strategies/custom_token.d.ts +0 -37
- package/dist/esm5/src/core/strategies/custom_token.test.d.ts +0 -17
- package/dist/esm5/src/core/strategies/email.d.ts +0 -104
- package/dist/esm5/src/core/strategies/email.test.d.ts +0 -17
- package/dist/esm5/src/core/strategies/email_and_password.d.ts +0 -139
- package/dist/esm5/src/core/strategies/email_and_password.test.d.ts +0 -17
- package/dist/esm5/src/core/strategies/email_link.d.ts +0 -107
- package/dist/esm5/src/core/strategies/email_link.test.d.ts +0 -17
- package/dist/esm5/src/core/strategies/idp.d.ts +0 -32
- package/dist/esm5/src/core/strategies/idp.test.d.ts +0 -17
- package/dist/esm5/src/core/strategies/redirect.d.ts +0 -36
- package/dist/esm5/src/core/strategies/redirect.test.d.ts +0 -17
- package/dist/esm5/src/core/user/account_info.d.ts +0 -68
- package/dist/esm5/src/core/user/account_info.test.d.ts +0 -17
- package/dist/esm5/src/core/user/additional_user_info.d.ts +0 -31
- package/dist/esm5/src/core/user/additional_user_info.test.d.ts +0 -17
- package/dist/esm5/src/core/user/id_token_result.d.ts +0 -48
- package/dist/esm5/src/core/user/id_token_result.test.d.ts +0 -17
- package/dist/esm5/src/core/user/invalidation.d.ts +0 -18
- package/dist/esm5/src/core/user/invalidation.test.d.ts +0 -17
- package/dist/esm5/src/core/user/link_unlink.d.ts +0 -30
- package/dist/esm5/src/core/user/link_unlink.test.d.ts +0 -17
- package/dist/esm5/src/core/user/proactive_refresh.d.ts +0 -34
- package/dist/esm5/src/core/user/proactive_refresh.test.d.ts +0 -17
- package/dist/esm5/src/core/user/reauthenticate.d.ts +0 -20
- package/dist/esm5/src/core/user/reauthenticate.test.d.ts +0 -17
- package/dist/esm5/src/core/user/reload.d.ts +0 -29
- package/dist/esm5/src/core/user/reload.test.d.ts +0 -17
- package/dist/esm5/src/core/user/token_manager.d.ts +0 -50
- package/dist/esm5/src/core/user/token_manager.test.d.ts +0 -17
- package/dist/esm5/src/core/user/user_credential_impl.d.ts +0 -37
- package/dist/esm5/src/core/user/user_credential_impl.test.d.ts +0 -17
- package/dist/esm5/src/core/user/user_impl.d.ts +0 -74
- package/dist/esm5/src/core/user/user_impl.test.d.ts +0 -17
- package/dist/esm5/src/core/user/user_metadata.d.ts +0 -27
- package/dist/esm5/src/core/util/assert.d.ts +0 -94
- package/dist/esm5/src/core/util/assert.test.d.ts +0 -17
- package/dist/esm5/src/core/util/browser.d.ts +0 -50
- package/dist/esm5/src/core/util/browser.test.d.ts +0 -17
- package/dist/esm5/src/core/util/delay.d.ts +0 -31
- package/dist/esm5/src/core/util/delay.test.d.ts +0 -17
- package/dist/esm5/src/core/util/emulator.d.ts +0 -18
- package/dist/esm5/src/core/util/emulator.test.d.ts +0 -17
- package/dist/esm5/src/core/util/event_id.d.ts +0 -17
- package/dist/esm5/src/core/util/event_id.test.d.ts +0 -17
- package/dist/esm5/src/core/util/fetch_provider.d.ts +0 -25
- package/dist/esm5/src/core/util/handler.d.ts +0 -20
- package/dist/esm5/src/core/util/instantiator.d.ts +0 -28
- package/dist/esm5/src/core/util/instantiator.test.d.ts +0 -17
- package/dist/esm5/src/core/util/location.d.ts +0 -19
- package/dist/esm5/src/core/util/log.d.ts +0 -23
- package/dist/esm5/src/core/util/navigator.d.ts +0 -21
- package/dist/esm5/src/core/util/providers.d.ts +0 -23
- package/dist/esm5/src/core/util/resolver.d.ts +0 -25
- package/dist/esm5/src/core/util/time.d.ts +0 -17
- package/dist/esm5/src/core/util/validate_origin.d.ts +0 -18
- package/dist/esm5/src/core/util/validate_origin.test.d.ts +0 -17
- package/dist/esm5/src/core/util/version.d.ts +0 -31
- package/dist/esm5/src/core/util/version.test.d.ts +0 -17
- package/dist/esm5/src/index.d.ts +0 -18
- package/dist/esm5/src/mfa/assertions/totp.d.ts +0 -124
- package/dist/esm5/src/mfa/assertions/totp.test.d.ts +0 -17
- package/dist/esm5/src/mfa/index.d.ts +0 -18
- package/dist/esm5/src/mfa/mfa_assertion.d.ts +0 -27
- package/dist/esm5/src/mfa/mfa_error.d.ts +0 -35
- package/dist/esm5/src/mfa/mfa_info.d.ts +0 -36
- package/dist/esm5/src/mfa/mfa_info.test.d.ts +0 -17
- package/dist/esm5/src/mfa/mfa_resolver.d.ts +0 -41
- package/dist/esm5/src/mfa/mfa_resolver.test.d.ts +0 -17
- package/dist/esm5/src/mfa/mfa_session.d.ts +0 -39
- package/dist/esm5/src/mfa/mfa_session.test.d.ts +0 -17
- package/dist/esm5/src/mfa/mfa_user.d.ts +0 -38
- package/dist/esm5/src/mfa/mfa_user.test.d.ts +0 -17
- package/dist/esm5/src/model/application_verifier.d.ts +0 -23
- package/dist/esm5/src/model/auth.d.ts +0 -87
- package/dist/esm5/src/model/enum_maps.d.ts +0 -98
- package/dist/esm5/src/model/enums.d.ts +0 -74
- package/dist/esm5/src/model/id_token.d.ts +0 -87
- package/dist/esm5/src/model/password_policy.d.ts +0 -111
- package/dist/esm5/src/model/popup_redirect.d.ts +0 -94
- package/dist/esm5/src/model/public_types.d.ts +0 -1285
- package/dist/esm5/src/model/user.d.ts +0 -83
- package/dist/esm5/src/platform_browser/auth.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/auth_window.d.ts +0 -37
- package/dist/esm5/src/platform_browser/iframe/gapi.d.ts +0 -19
- package/dist/esm5/src/platform_browser/iframe/gapi.iframes.d.ts +0 -47
- package/dist/esm5/src/platform_browser/iframe/gapi.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/iframe/iframe.d.ts +0 -18
- package/dist/esm5/src/platform_browser/iframe/iframe.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/index.d.ts +0 -27
- package/dist/esm5/src/platform_browser/load_js.d.ts +0 -29
- package/dist/esm5/src/platform_browser/load_js.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/messagechannel/index.d.ts +0 -87
- package/dist/esm5/src/platform_browser/messagechannel/promise.d.ts +0 -33
- package/dist/esm5/src/platform_browser/messagechannel/promise.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/messagechannel/receiver.d.ts +0 -63
- package/dist/esm5/src/platform_browser/messagechannel/receiver.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/messagechannel/sender.d.ts +0 -46
- package/dist/esm5/src/platform_browser/messagechannel/sender.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/mfa/assertions/phone.d.ts +0 -59
- package/dist/esm5/src/platform_browser/mfa/assertions/phone.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/persistence/browser.d.ts +0 -27
- package/dist/esm5/src/platform_browser/persistence/browser.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/persistence/indexed_db.d.ts +0 -33
- package/dist/esm5/src/platform_browser/persistence/indexed_db.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/persistence/local_storage.d.ts +0 -25
- package/dist/esm5/src/platform_browser/persistence/local_storage.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/persistence/session_storage.d.ts +0 -24
- package/dist/esm5/src/platform_browser/persistence/session_storage.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/popup_redirect.d.ts +0 -27
- package/dist/esm5/src/platform_browser/popup_redirect.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/providers/phone.d.ts +0 -152
- package/dist/esm5/src/platform_browser/providers/phone.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/recaptcha/recaptcha.d.ts +0 -71
- package/dist/esm5/src/platform_browser/recaptcha/recaptcha.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +0 -45
- package/dist/esm5/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/recaptcha/recaptcha_loader.d.ts +0 -49
- package/dist/esm5/src/platform_browser/recaptcha/recaptcha_loader.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/recaptcha/recaptcha_mock.d.ts +0 -66
- package/dist/esm5/src/platform_browser/recaptcha/recaptcha_mock.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/recaptcha/recaptcha_verifier.d.ts +0 -92
- package/dist/esm5/src/platform_browser/recaptcha/recaptcha_verifier.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/strategies/phone.d.ts +0 -112
- package/dist/esm5/src/platform_browser/strategies/phone.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/strategies/popup.d.ts +0 -109
- package/dist/esm5/src/platform_browser/strategies/popup.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/strategies/redirect.d.ts +0 -176
- package/dist/esm5/src/platform_browser/strategies/redirect.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/util/popup.d.ts +0 -24
- package/dist/esm5/src/platform_browser/util/popup.test.d.ts +0 -17
- package/dist/esm5/src/platform_browser/util/worker.d.ts +0 -20
- package/dist/esm5/src/platform_cordova/plugins.d.ts +0 -42
- package/dist/esm5/src/platform_cordova/popup_redirect/events.d.ts +0 -39
- package/dist/esm5/src/platform_cordova/popup_redirect/events.test.d.ts +0 -17
- package/dist/esm5/src/platform_cordova/popup_redirect/popup_redirect.d.ts +0 -24
- package/dist/esm5/src/platform_cordova/popup_redirect/popup_redirect.test.d.ts +0 -17
- package/dist/esm5/src/platform_cordova/popup_redirect/utils.d.ts +0 -47
- package/dist/esm5/src/platform_cordova/popup_redirect/utils.test.d.ts +0 -17
- package/dist/esm5/src/platform_cordova/strategies/redirect.d.ts +0 -20
- package/dist/esm5/src/platform_node/index.d.ts +0 -50
- package/dist/esm5/src/platform_react_native/persistence/react_native.d.ts +0 -25
- package/dist/esm5/src/platform_react_native/persistence/react_native.test.d.ts +0 -17
- package/dist/esm5/test/helpers/api/helper.d.ts +0 -22
- package/dist/esm5/test/helpers/delay.d.ts +0 -20
- package/dist/esm5/test/helpers/erroring_unavailable_persistence.d.ts +0 -36
- package/dist/esm5/test/helpers/fake_service_worker.d.ts +0 -22
- package/dist/esm5/test/helpers/id_token_response.d.ts +0 -18
- package/dist/esm5/test/helpers/iframe_event.d.ts +0 -19
- package/dist/esm5/test/helpers/integration/emulator_rest_helpers.d.ts +0 -35
- package/dist/esm5/test/helpers/integration/helpers.d.ts +0 -32
- package/dist/esm5/test/helpers/integration/settings.d.ts +0 -23
- package/dist/esm5/test/helpers/jwt.d.ts +0 -17
- package/dist/esm5/test/helpers/mock_auth.d.ts +0 -47
- package/dist/esm5/test/helpers/mock_auth_credential.d.ts +0 -31
- package/dist/esm5/test/helpers/mock_fetch.d.ts +0 -30
- package/dist/esm5/test/helpers/mock_fetch.test.d.ts +0 -17
- package/dist/esm5/test/helpers/mock_popup_redirect_resolver.d.ts +0 -24
- package/dist/esm5/test/helpers/redirect_persistence.d.ts +0 -24
- package/dist/esm5/test/helpers/timeout_stub.d.ts +0 -34
- package/dist/esm5/test/integration/flows/anonymous.test.d.ts +0 -17
- package/dist/esm5/test/integration/flows/custom.local.test.d.ts +0 -17
- package/dist/esm5/test/integration/flows/email.test.d.ts +0 -17
- package/dist/esm5/test/integration/flows/idp.local.test.d.ts +0 -17
- package/dist/esm5/test/integration/flows/middleware_test_generator.d.ts +0 -18
- package/dist/esm5/test/integration/flows/oob.local.test.d.ts +0 -17
- package/dist/esm5/test/integration/flows/password_policy.test.d.ts +0 -17
- package/dist/esm5/test/integration/flows/phone.test.d.ts +0 -17
- package/dist/esm5/test/integration/flows/totp.test.d.ts +0 -17
- package/dist/esm5/test/integration/webdriver/anonymous.test.d.ts +0 -17
- package/dist/esm5/test/integration/webdriver/compat/firebaseui.test.d.ts +0 -17
- package/dist/esm5/test/integration/webdriver/persistence.test.d.ts +0 -17
- package/dist/esm5/test/integration/webdriver/popup.test.d.ts +0 -17
- package/dist/esm5/test/integration/webdriver/redirect.test.d.ts +0 -17
- package/dist/esm5/test/integration/webdriver/util/auth_driver.d.ts +0 -46
- package/dist/esm5/test/integration/webdriver/util/functions.d.ts +0 -81
- package/dist/esm5/test/integration/webdriver/util/idp_page.d.ts +0 -31
- package/dist/esm5/test/integration/webdriver/util/js_load_condition.d.ts +0 -25
- package/dist/esm5/test/integration/webdriver/util/test_runner.d.ts +0 -19
- package/dist/esm5/test/integration/webdriver/util/test_server.d.ts +0 -27
- package/dist/esm5/test/integration/webdriver/util/ui_page.d.ts +0 -33
- package/dist/index.webworker.esm5.js +0 -9265
- package/dist/index.webworker.esm5.js.map +0 -1
- package/dist/node/totp-259483a2.js +0 -8762
- package/dist/node/totp-259483a2.js.map +0 -1
- package/dist/node-esm/totp-219bb96f.js.map +0 -1
- package/dist/rn/index-2f66320e.js +0 -9819
- package/dist/rn/index-2f66320e.js.map +0 -1
- package/dist/web-extension-cjs/register-674a8250.js.map +0 -1
- package/dist/web-extension-esm2017/register-428f8789.js.map +0 -1
- /package/dist/{esm5/test/integration/flows/firebaseserverapp.test.d.ts → browser-cjs/test/integration/flows/recaptcha_enterprise.test.d.ts} +0 -0
|
@@ -1092,6 +1092,16 @@ class RecaptchaConfig {
|
|
|
1092
1092
|
"ENFORCE" /* EnforcementState.ENFORCE */ ||
|
|
1093
1093
|
this.getProviderEnforcementState(providerStr) === "AUDIT" /* EnforcementState.AUDIT */);
|
|
1094
1094
|
}
|
|
1095
|
+
/**
|
|
1096
|
+
* Returns true if reCAPTCHA Enterprise protection is enabled in at least one provider, otherwise
|
|
1097
|
+
* returns false.
|
|
1098
|
+
*
|
|
1099
|
+
* @returns Whether or not reCAPTCHA Enterprise protection is enabled for at least one provider.
|
|
1100
|
+
*/
|
|
1101
|
+
isAnyProviderEnabled() {
|
|
1102
|
+
return (this.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */) ||
|
|
1103
|
+
this.isProviderEnabled("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */));
|
|
1104
|
+
}
|
|
1095
1105
|
}
|
|
1096
1106
|
|
|
1097
1107
|
/**
|
|
@@ -3179,6 +3189,167 @@ function _generateCallbackName(prefix) {
|
|
|
3179
3189
|
return `__${prefix}${Math.floor(Math.random() * 1000000)}`;
|
|
3180
3190
|
}
|
|
3181
3191
|
|
|
3192
|
+
/**
|
|
3193
|
+
* @license
|
|
3194
|
+
* Copyright 2020 Google LLC
|
|
3195
|
+
*
|
|
3196
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3197
|
+
* you may not use this file except in compliance with the License.
|
|
3198
|
+
* You may obtain a copy of the License at
|
|
3199
|
+
*
|
|
3200
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
3201
|
+
*
|
|
3202
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
3203
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
3204
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3205
|
+
* See the License for the specific language governing permissions and
|
|
3206
|
+
* limitations under the License.
|
|
3207
|
+
*/
|
|
3208
|
+
const _SOLVE_TIME_MS = 500;
|
|
3209
|
+
const _EXPIRATION_TIME_MS = 60000;
|
|
3210
|
+
const _WIDGET_ID_START = 1000000000000;
|
|
3211
|
+
class MockReCaptcha {
|
|
3212
|
+
constructor(auth) {
|
|
3213
|
+
this.auth = auth;
|
|
3214
|
+
this.counter = _WIDGET_ID_START;
|
|
3215
|
+
this._widgets = new Map();
|
|
3216
|
+
}
|
|
3217
|
+
render(container, parameters) {
|
|
3218
|
+
const id = this.counter;
|
|
3219
|
+
this._widgets.set(id, new MockWidget(container, this.auth.name, parameters || {}));
|
|
3220
|
+
this.counter++;
|
|
3221
|
+
return id;
|
|
3222
|
+
}
|
|
3223
|
+
reset(optWidgetId) {
|
|
3224
|
+
var _a;
|
|
3225
|
+
const id = optWidgetId || _WIDGET_ID_START;
|
|
3226
|
+
void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.delete());
|
|
3227
|
+
this._widgets.delete(id);
|
|
3228
|
+
}
|
|
3229
|
+
getResponse(optWidgetId) {
|
|
3230
|
+
var _a;
|
|
3231
|
+
const id = optWidgetId || _WIDGET_ID_START;
|
|
3232
|
+
return ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.getResponse()) || '';
|
|
3233
|
+
}
|
|
3234
|
+
async execute(optWidgetId) {
|
|
3235
|
+
var _a;
|
|
3236
|
+
const id = optWidgetId || _WIDGET_ID_START;
|
|
3237
|
+
void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.execute());
|
|
3238
|
+
return '';
|
|
3239
|
+
}
|
|
3240
|
+
}
|
|
3241
|
+
class MockGreCAPTCHATopLevel {
|
|
3242
|
+
constructor() {
|
|
3243
|
+
this.enterprise = new MockGreCAPTCHA();
|
|
3244
|
+
}
|
|
3245
|
+
ready(callback) {
|
|
3246
|
+
callback();
|
|
3247
|
+
}
|
|
3248
|
+
execute(
|
|
3249
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3250
|
+
_siteKey, _options) {
|
|
3251
|
+
return Promise.resolve('token');
|
|
3252
|
+
}
|
|
3253
|
+
render(
|
|
3254
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3255
|
+
_container, _parameters) {
|
|
3256
|
+
return '';
|
|
3257
|
+
}
|
|
3258
|
+
}
|
|
3259
|
+
class MockGreCAPTCHA {
|
|
3260
|
+
ready(callback) {
|
|
3261
|
+
callback();
|
|
3262
|
+
}
|
|
3263
|
+
execute(
|
|
3264
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3265
|
+
_siteKey, _options) {
|
|
3266
|
+
return Promise.resolve('token');
|
|
3267
|
+
}
|
|
3268
|
+
render(
|
|
3269
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3270
|
+
_container, _parameters) {
|
|
3271
|
+
return '';
|
|
3272
|
+
}
|
|
3273
|
+
}
|
|
3274
|
+
class MockWidget {
|
|
3275
|
+
constructor(containerOrId, appName, params) {
|
|
3276
|
+
this.params = params;
|
|
3277
|
+
this.timerId = null;
|
|
3278
|
+
this.deleted = false;
|
|
3279
|
+
this.responseToken = null;
|
|
3280
|
+
this.clickHandler = () => {
|
|
3281
|
+
this.execute();
|
|
3282
|
+
};
|
|
3283
|
+
const container = typeof containerOrId === 'string'
|
|
3284
|
+
? document.getElementById(containerOrId)
|
|
3285
|
+
: containerOrId;
|
|
3286
|
+
_assert(container, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */, { appName });
|
|
3287
|
+
this.container = container;
|
|
3288
|
+
this.isVisible = this.params.size !== 'invisible';
|
|
3289
|
+
if (this.isVisible) {
|
|
3290
|
+
this.execute();
|
|
3291
|
+
}
|
|
3292
|
+
else {
|
|
3293
|
+
this.container.addEventListener('click', this.clickHandler);
|
|
3294
|
+
}
|
|
3295
|
+
}
|
|
3296
|
+
getResponse() {
|
|
3297
|
+
this.checkIfDeleted();
|
|
3298
|
+
return this.responseToken;
|
|
3299
|
+
}
|
|
3300
|
+
delete() {
|
|
3301
|
+
this.checkIfDeleted();
|
|
3302
|
+
this.deleted = true;
|
|
3303
|
+
if (this.timerId) {
|
|
3304
|
+
clearTimeout(this.timerId);
|
|
3305
|
+
this.timerId = null;
|
|
3306
|
+
}
|
|
3307
|
+
this.container.removeEventListener('click', this.clickHandler);
|
|
3308
|
+
}
|
|
3309
|
+
execute() {
|
|
3310
|
+
this.checkIfDeleted();
|
|
3311
|
+
if (this.timerId) {
|
|
3312
|
+
return;
|
|
3313
|
+
}
|
|
3314
|
+
this.timerId = window.setTimeout(() => {
|
|
3315
|
+
this.responseToken = generateRandomAlphaNumericString(50);
|
|
3316
|
+
const { callback, 'expired-callback': expiredCallback } = this.params;
|
|
3317
|
+
if (callback) {
|
|
3318
|
+
try {
|
|
3319
|
+
callback(this.responseToken);
|
|
3320
|
+
}
|
|
3321
|
+
catch (e) { }
|
|
3322
|
+
}
|
|
3323
|
+
this.timerId = window.setTimeout(() => {
|
|
3324
|
+
this.timerId = null;
|
|
3325
|
+
this.responseToken = null;
|
|
3326
|
+
if (expiredCallback) {
|
|
3327
|
+
try {
|
|
3328
|
+
expiredCallback();
|
|
3329
|
+
}
|
|
3330
|
+
catch (e) { }
|
|
3331
|
+
}
|
|
3332
|
+
if (this.isVisible) {
|
|
3333
|
+
this.execute();
|
|
3334
|
+
}
|
|
3335
|
+
}, _EXPIRATION_TIME_MS);
|
|
3336
|
+
}, _SOLVE_TIME_MS);
|
|
3337
|
+
}
|
|
3338
|
+
checkIfDeleted() {
|
|
3339
|
+
if (this.deleted) {
|
|
3340
|
+
throw new Error('reCAPTCHA mock was already deleted!');
|
|
3341
|
+
}
|
|
3342
|
+
}
|
|
3343
|
+
}
|
|
3344
|
+
function generateRandomAlphaNumericString(len) {
|
|
3345
|
+
const chars = [];
|
|
3346
|
+
const allowedChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
3347
|
+
for (let i = 0; i < len; i++) {
|
|
3348
|
+
chars.push(allowedChars.charAt(Math.floor(Math.random() * allowedChars.length)));
|
|
3349
|
+
}
|
|
3350
|
+
return chars.join('');
|
|
3351
|
+
}
|
|
3352
|
+
|
|
3182
3353
|
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
3183
3354
|
const RECAPTCHA_ENTERPRISE_VERIFIER_TYPE = 'recaptcha-enterprise';
|
|
3184
3355
|
const FAKE_TOKEN = 'NO_RECAPTCHA';
|
|
@@ -3254,6 +3425,11 @@ class RecaptchaEnterpriseVerifier {
|
|
|
3254
3425
|
reject(Error('No reCAPTCHA enterprise script loaded.'));
|
|
3255
3426
|
}
|
|
3256
3427
|
}
|
|
3428
|
+
// Returns Promise for a mock token when appVerificationDisabledForTesting is true.
|
|
3429
|
+
if (this.auth.settings.appVerificationDisabledForTesting) {
|
|
3430
|
+
const mockRecaptcha = new MockGreCAPTCHATopLevel();
|
|
3431
|
+
return mockRecaptcha.execute('siteKey', { action: 'verify' });
|
|
3432
|
+
}
|
|
3257
3433
|
return new Promise((resolve, reject) => {
|
|
3258
3434
|
retrieveSiteKey(this.auth)
|
|
3259
3435
|
.then(siteKey => {
|
|
@@ -3284,17 +3460,50 @@ class RecaptchaEnterpriseVerifier {
|
|
|
3284
3460
|
});
|
|
3285
3461
|
}
|
|
3286
3462
|
}
|
|
3287
|
-
async function injectRecaptchaFields(auth, request, action,
|
|
3463
|
+
async function injectRecaptchaFields(auth, request, action, isCaptchaResp = false, isFakeToken = false) {
|
|
3288
3464
|
const verifier = new RecaptchaEnterpriseVerifier(auth);
|
|
3289
3465
|
let captchaResponse;
|
|
3290
|
-
|
|
3291
|
-
captchaResponse =
|
|
3466
|
+
if (isFakeToken) {
|
|
3467
|
+
captchaResponse = FAKE_TOKEN;
|
|
3292
3468
|
}
|
|
3293
|
-
|
|
3294
|
-
|
|
3469
|
+
else {
|
|
3470
|
+
try {
|
|
3471
|
+
captchaResponse = await verifier.verify(action);
|
|
3472
|
+
}
|
|
3473
|
+
catch (error) {
|
|
3474
|
+
captchaResponse = await verifier.verify(action, true);
|
|
3475
|
+
}
|
|
3295
3476
|
}
|
|
3296
3477
|
const newRequest = Object.assign({}, request);
|
|
3297
|
-
if (
|
|
3478
|
+
if (action === "mfaSmsEnrollment" /* RecaptchaActionName.MFA_SMS_ENROLLMENT */ ||
|
|
3479
|
+
action === "mfaSmsSignIn" /* RecaptchaActionName.MFA_SMS_SIGNIN */) {
|
|
3480
|
+
if ('phoneEnrollmentInfo' in newRequest) {
|
|
3481
|
+
const phoneNumber = newRequest.phoneEnrollmentInfo.phoneNumber;
|
|
3482
|
+
const recaptchaToken = newRequest.phoneEnrollmentInfo.recaptchaToken;
|
|
3483
|
+
Object.assign(newRequest, {
|
|
3484
|
+
'phoneEnrollmentInfo': {
|
|
3485
|
+
phoneNumber,
|
|
3486
|
+
recaptchaToken,
|
|
3487
|
+
captchaResponse,
|
|
3488
|
+
'clientType': "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */,
|
|
3489
|
+
'recaptchaVersion': "RECAPTCHA_ENTERPRISE" /* RecaptchaVersion.ENTERPRISE */
|
|
3490
|
+
}
|
|
3491
|
+
});
|
|
3492
|
+
}
|
|
3493
|
+
else if ('phoneSignInInfo' in newRequest) {
|
|
3494
|
+
const recaptchaToken = newRequest.phoneSignInInfo.recaptchaToken;
|
|
3495
|
+
Object.assign(newRequest, {
|
|
3496
|
+
'phoneSignInInfo': {
|
|
3497
|
+
recaptchaToken,
|
|
3498
|
+
captchaResponse,
|
|
3499
|
+
'clientType': "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */,
|
|
3500
|
+
'recaptchaVersion': "RECAPTCHA_ENTERPRISE" /* RecaptchaVersion.ENTERPRISE */
|
|
3501
|
+
}
|
|
3502
|
+
});
|
|
3503
|
+
}
|
|
3504
|
+
return newRequest;
|
|
3505
|
+
}
|
|
3506
|
+
if (!isCaptchaResp) {
|
|
3298
3507
|
Object.assign(newRequest, { captchaResponse });
|
|
3299
3508
|
}
|
|
3300
3509
|
else {
|
|
@@ -3306,24 +3515,64 @@ async function injectRecaptchaFields(auth, request, action, captchaResp = false)
|
|
|
3306
3515
|
});
|
|
3307
3516
|
return newRequest;
|
|
3308
3517
|
}
|
|
3309
|
-
async function handleRecaptchaFlow(authInstance, request, actionName, actionMethod) {
|
|
3310
|
-
var _a;
|
|
3311
|
-
if (
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3518
|
+
async function handleRecaptchaFlow(authInstance, request, actionName, actionMethod, recaptchaAuthProvider) {
|
|
3519
|
+
var _a, _b;
|
|
3520
|
+
if (recaptchaAuthProvider === "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */) {
|
|
3521
|
+
if ((_a = authInstance
|
|
3522
|
+
._getRecaptchaConfig()) === null || _a === void 0 ? void 0 : _a.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */)) {
|
|
3523
|
+
const requestWithRecaptcha = await injectRecaptchaFields(authInstance, request, actionName, actionName === "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */);
|
|
3524
|
+
return actionMethod(authInstance, requestWithRecaptcha);
|
|
3525
|
+
}
|
|
3526
|
+
else {
|
|
3527
|
+
return actionMethod(authInstance, request).catch(async (error) => {
|
|
3528
|
+
if (error.code === `auth/${"missing-recaptcha-token" /* AuthErrorCode.MISSING_RECAPTCHA_TOKEN */}`) {
|
|
3529
|
+
console.log(`${actionName} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`);
|
|
3530
|
+
const requestWithRecaptcha = await injectRecaptchaFields(authInstance, request, actionName, actionName === "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */);
|
|
3531
|
+
return actionMethod(authInstance, requestWithRecaptcha);
|
|
3532
|
+
}
|
|
3533
|
+
else {
|
|
3534
|
+
return Promise.reject(error);
|
|
3535
|
+
}
|
|
3536
|
+
});
|
|
3537
|
+
}
|
|
3315
3538
|
}
|
|
3316
|
-
else {
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
|
|
3323
|
-
|
|
3539
|
+
else if (recaptchaAuthProvider === "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */) {
|
|
3540
|
+
if ((_b = authInstance
|
|
3541
|
+
._getRecaptchaConfig()) === null || _b === void 0 ? void 0 : _b.isProviderEnabled("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */)) {
|
|
3542
|
+
const requestWithRecaptcha = await injectRecaptchaFields(authInstance, request, actionName);
|
|
3543
|
+
return actionMethod(authInstance, requestWithRecaptcha).catch(async (error) => {
|
|
3544
|
+
var _a;
|
|
3545
|
+
if (((_a = authInstance
|
|
3546
|
+
._getRecaptchaConfig()) === null || _a === void 0 ? void 0 : _a.getProviderEnforcementState("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */)) === "AUDIT" /* EnforcementState.AUDIT */) {
|
|
3547
|
+
// AUDIT mode
|
|
3548
|
+
if (error.code === `auth/${"missing-recaptcha-token" /* AuthErrorCode.MISSING_RECAPTCHA_TOKEN */}` ||
|
|
3549
|
+
error.code === `auth/${"invalid-app-credential" /* AuthErrorCode.INVALID_APP_CREDENTIAL */}`) {
|
|
3550
|
+
console.log(`Failed to verify with reCAPTCHA Enterprise. Automatically triggering the reCAPTCHA v2 flow to complete the ${actionName} flow.`);
|
|
3551
|
+
// reCAPTCHA Enterprise token is missing or reCAPTCHA Enterprise token
|
|
3552
|
+
// check fails.
|
|
3553
|
+
// Fallback to reCAPTCHA v2 flow.
|
|
3554
|
+
const requestWithRecaptchaFields = await injectRecaptchaFields(authInstance, request, actionName, false, // isCaptchaResp
|
|
3555
|
+
true // isFakeToken
|
|
3556
|
+
);
|
|
3557
|
+
// This will call the PhoneApiCaller to fetch and inject reCAPTCHA v2 token.
|
|
3558
|
+
return actionMethod(authInstance, requestWithRecaptchaFields);
|
|
3559
|
+
}
|
|
3560
|
+
}
|
|
3561
|
+
// ENFORCE mode or AUDIT mode with any other error.
|
|
3324
3562
|
return Promise.reject(error);
|
|
3325
|
-
}
|
|
3326
|
-
}
|
|
3563
|
+
});
|
|
3564
|
+
}
|
|
3565
|
+
else {
|
|
3566
|
+
// Do reCAPTCHA v2 flow.
|
|
3567
|
+
const requestWithRecaptchaFields = await injectRecaptchaFields(authInstance, request, actionName, false, // isCaptchaResp
|
|
3568
|
+
true // isFakeToken
|
|
3569
|
+
);
|
|
3570
|
+
// This will call the PhoneApiCaller to fetch and inject v2 token.
|
|
3571
|
+
return actionMethod(authInstance, requestWithRecaptchaFields);
|
|
3572
|
+
}
|
|
3573
|
+
}
|
|
3574
|
+
else {
|
|
3575
|
+
return Promise.reject(recaptchaAuthProvider + ' provider is not supported.');
|
|
3327
3576
|
}
|
|
3328
3577
|
}
|
|
3329
3578
|
async function _initializeRecaptchaConfig(auth) {
|
|
@@ -3339,7 +3588,7 @@ async function _initializeRecaptchaConfig(auth) {
|
|
|
3339
3588
|
else {
|
|
3340
3589
|
authInternal._tenantRecaptchaConfigs[authInternal.tenantId] = config;
|
|
3341
3590
|
}
|
|
3342
|
-
if (config.
|
|
3591
|
+
if (config.isAnyProviderEnabled()) {
|
|
3343
3592
|
const verifier = new RecaptchaEnterpriseVerifier(authInternal);
|
|
3344
3593
|
void verifier.verify();
|
|
3345
3594
|
}
|
|
@@ -3765,7 +4014,7 @@ class EmailAuthCredential extends AuthCredential {
|
|
|
3765
4014
|
password: this._password,
|
|
3766
4015
|
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
3767
4016
|
};
|
|
3768
|
-
return handleRecaptchaFlow(auth, request, "signInWithPassword" /* RecaptchaActionName.SIGN_IN_WITH_PASSWORD */, signInWithPassword);
|
|
4017
|
+
return handleRecaptchaFlow(auth, request, "signInWithPassword" /* RecaptchaActionName.SIGN_IN_WITH_PASSWORD */, signInWithPassword, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
|
|
3769
4018
|
case "emailLink" /* SignInMethod.EMAIL_LINK */:
|
|
3770
4019
|
return signInWithEmailLink$1(auth, {
|
|
3771
4020
|
email: this._email,
|
|
@@ -3786,7 +4035,7 @@ class EmailAuthCredential extends AuthCredential {
|
|
|
3786
4035
|
password: this._password,
|
|
3787
4036
|
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
3788
4037
|
};
|
|
3789
|
-
return handleRecaptchaFlow(auth, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, linkEmailPassword);
|
|
4038
|
+
return handleRecaptchaFlow(auth, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, linkEmailPassword, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
|
|
3790
4039
|
case "emailLink" /* SignInMethod.EMAIL_LINK */:
|
|
3791
4040
|
return signInWithEmailLinkForLinking(auth, {
|
|
3792
4041
|
idToken,
|
|
@@ -5781,7 +6030,7 @@ async function sendPasswordResetEmail(auth, email, actionCodeSettings) {
|
|
|
5781
6030
|
if (actionCodeSettings) {
|
|
5782
6031
|
_setActionCodeSettingsOnRequest(authInternal, request, actionCodeSettings);
|
|
5783
6032
|
}
|
|
5784
|
-
await handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendPasswordResetEmail$1);
|
|
6033
|
+
await handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendPasswordResetEmail$1, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
|
|
5785
6034
|
}
|
|
5786
6035
|
/**
|
|
5787
6036
|
* Completes the password reset process, given a confirmation code and new password.
|
|
@@ -5914,7 +6163,7 @@ async function createUserWithEmailAndPassword(auth, email, password) {
|
|
|
5914
6163
|
password,
|
|
5915
6164
|
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
5916
6165
|
};
|
|
5917
|
-
const signUpResponse = handleRecaptchaFlow(authInternal, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, signUp);
|
|
6166
|
+
const signUpResponse = handleRecaptchaFlow(authInternal, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, signUp, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
|
|
5918
6167
|
const response = await signUpResponse.catch(error => {
|
|
5919
6168
|
if (error.code === `auth/${"password-does-not-meet-requirements" /* AuthErrorCode.PASSWORD_DOES_NOT_MEET_REQUIREMENTS */}`) {
|
|
5920
6169
|
void recachePasswordPolicy(auth);
|
|
@@ -6028,7 +6277,7 @@ async function sendSignInLinkToEmail(auth, email, actionCodeSettings) {
|
|
|
6028
6277
|
}
|
|
6029
6278
|
}
|
|
6030
6279
|
setActionCodeSettings(request, actionCodeSettings);
|
|
6031
|
-
await handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendSignInLinkToEmail$1);
|
|
6280
|
+
await handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendSignInLinkToEmail$1, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
|
|
6032
6281
|
}
|
|
6033
6282
|
/**
|
|
6034
6283
|
* Checks if an incoming link is a sign-in with email link suitable for {@link signInWithEmailLink}.
|
|
@@ -7963,134 +8212,6 @@ function finalizeSignInTotpMfa(auth, request) {
|
|
|
7963
8212
|
return _performApiRequest(auth, "POST" /* HttpMethod.POST */, "/v2/accounts/mfaSignIn:finalize" /* Endpoint.FINALIZE_MFA_SIGN_IN */, _addTidIfNecessary(auth, request));
|
|
7964
8213
|
}
|
|
7965
8214
|
|
|
7966
|
-
/**
|
|
7967
|
-
* @license
|
|
7968
|
-
* Copyright 2020 Google LLC
|
|
7969
|
-
*
|
|
7970
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7971
|
-
* you may not use this file except in compliance with the License.
|
|
7972
|
-
* You may obtain a copy of the License at
|
|
7973
|
-
*
|
|
7974
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
7975
|
-
*
|
|
7976
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
7977
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
7978
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
7979
|
-
* See the License for the specific language governing permissions and
|
|
7980
|
-
* limitations under the License.
|
|
7981
|
-
*/
|
|
7982
|
-
const _SOLVE_TIME_MS = 500;
|
|
7983
|
-
const _EXPIRATION_TIME_MS = 60000;
|
|
7984
|
-
const _WIDGET_ID_START = 1000000000000;
|
|
7985
|
-
class MockReCaptcha {
|
|
7986
|
-
constructor(auth) {
|
|
7987
|
-
this.auth = auth;
|
|
7988
|
-
this.counter = _WIDGET_ID_START;
|
|
7989
|
-
this._widgets = new Map();
|
|
7990
|
-
}
|
|
7991
|
-
render(container, parameters) {
|
|
7992
|
-
const id = this.counter;
|
|
7993
|
-
this._widgets.set(id, new MockWidget(container, this.auth.name, parameters || {}));
|
|
7994
|
-
this.counter++;
|
|
7995
|
-
return id;
|
|
7996
|
-
}
|
|
7997
|
-
reset(optWidgetId) {
|
|
7998
|
-
var _a;
|
|
7999
|
-
const id = optWidgetId || _WIDGET_ID_START;
|
|
8000
|
-
void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.delete());
|
|
8001
|
-
this._widgets.delete(id);
|
|
8002
|
-
}
|
|
8003
|
-
getResponse(optWidgetId) {
|
|
8004
|
-
var _a;
|
|
8005
|
-
const id = optWidgetId || _WIDGET_ID_START;
|
|
8006
|
-
return ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.getResponse()) || '';
|
|
8007
|
-
}
|
|
8008
|
-
async execute(optWidgetId) {
|
|
8009
|
-
var _a;
|
|
8010
|
-
const id = optWidgetId || _WIDGET_ID_START;
|
|
8011
|
-
void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.execute());
|
|
8012
|
-
return '';
|
|
8013
|
-
}
|
|
8014
|
-
}
|
|
8015
|
-
class MockWidget {
|
|
8016
|
-
constructor(containerOrId, appName, params) {
|
|
8017
|
-
this.params = params;
|
|
8018
|
-
this.timerId = null;
|
|
8019
|
-
this.deleted = false;
|
|
8020
|
-
this.responseToken = null;
|
|
8021
|
-
this.clickHandler = () => {
|
|
8022
|
-
this.execute();
|
|
8023
|
-
};
|
|
8024
|
-
const container = typeof containerOrId === 'string'
|
|
8025
|
-
? document.getElementById(containerOrId)
|
|
8026
|
-
: containerOrId;
|
|
8027
|
-
_assert(container, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */, { appName });
|
|
8028
|
-
this.container = container;
|
|
8029
|
-
this.isVisible = this.params.size !== 'invisible';
|
|
8030
|
-
if (this.isVisible) {
|
|
8031
|
-
this.execute();
|
|
8032
|
-
}
|
|
8033
|
-
else {
|
|
8034
|
-
this.container.addEventListener('click', this.clickHandler);
|
|
8035
|
-
}
|
|
8036
|
-
}
|
|
8037
|
-
getResponse() {
|
|
8038
|
-
this.checkIfDeleted();
|
|
8039
|
-
return this.responseToken;
|
|
8040
|
-
}
|
|
8041
|
-
delete() {
|
|
8042
|
-
this.checkIfDeleted();
|
|
8043
|
-
this.deleted = true;
|
|
8044
|
-
if (this.timerId) {
|
|
8045
|
-
clearTimeout(this.timerId);
|
|
8046
|
-
this.timerId = null;
|
|
8047
|
-
}
|
|
8048
|
-
this.container.removeEventListener('click', this.clickHandler);
|
|
8049
|
-
}
|
|
8050
|
-
execute() {
|
|
8051
|
-
this.checkIfDeleted();
|
|
8052
|
-
if (this.timerId) {
|
|
8053
|
-
return;
|
|
8054
|
-
}
|
|
8055
|
-
this.timerId = window.setTimeout(() => {
|
|
8056
|
-
this.responseToken = generateRandomAlphaNumericString(50);
|
|
8057
|
-
const { callback, 'expired-callback': expiredCallback } = this.params;
|
|
8058
|
-
if (callback) {
|
|
8059
|
-
try {
|
|
8060
|
-
callback(this.responseToken);
|
|
8061
|
-
}
|
|
8062
|
-
catch (e) { }
|
|
8063
|
-
}
|
|
8064
|
-
this.timerId = window.setTimeout(() => {
|
|
8065
|
-
this.timerId = null;
|
|
8066
|
-
this.responseToken = null;
|
|
8067
|
-
if (expiredCallback) {
|
|
8068
|
-
try {
|
|
8069
|
-
expiredCallback();
|
|
8070
|
-
}
|
|
8071
|
-
catch (e) { }
|
|
8072
|
-
}
|
|
8073
|
-
if (this.isVisible) {
|
|
8074
|
-
this.execute();
|
|
8075
|
-
}
|
|
8076
|
-
}, _EXPIRATION_TIME_MS);
|
|
8077
|
-
}, _SOLVE_TIME_MS);
|
|
8078
|
-
}
|
|
8079
|
-
checkIfDeleted() {
|
|
8080
|
-
if (this.deleted) {
|
|
8081
|
-
throw new Error('reCAPTCHA mock was already deleted!');
|
|
8082
|
-
}
|
|
8083
|
-
}
|
|
8084
|
-
}
|
|
8085
|
-
function generateRandomAlphaNumericString(len) {
|
|
8086
|
-
const chars = [];
|
|
8087
|
-
const allowedChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
8088
|
-
for (let i = 0; i < len; i++) {
|
|
8089
|
-
chars.push(allowedChars.charAt(Math.floor(Math.random() * allowedChars.length)));
|
|
8090
|
-
}
|
|
8091
|
-
return chars.join('');
|
|
8092
|
-
}
|
|
8093
|
-
|
|
8094
8215
|
/**
|
|
8095
8216
|
* @license
|
|
8096
8217
|
* Copyright 2020 Google LLC
|
|
@@ -8445,12 +8566,15 @@ class ConfirmationResultImpl {
|
|
|
8445
8566
|
* provides the code sent to their phone, call {@link ConfirmationResult.confirm}
|
|
8446
8567
|
* with the code to sign the user in.
|
|
8447
8568
|
*
|
|
8448
|
-
* For abuse prevention, this method
|
|
8449
|
-
* This SDK includes
|
|
8569
|
+
* For abuse prevention, this method requires a {@link ApplicationVerifier}.
|
|
8570
|
+
* This SDK includes an implementation based on reCAPTCHA v2, {@link RecaptchaVerifier}.
|
|
8450
8571
|
* This function can work on other platforms that do not support the
|
|
8451
8572
|
* {@link RecaptchaVerifier} (like React Native), but you need to use a
|
|
8452
8573
|
* third-party {@link ApplicationVerifier} implementation.
|
|
8453
8574
|
*
|
|
8575
|
+
* If you've enabled project-level reCAPTCHA Enterprise bot protection in
|
|
8576
|
+
* Enforce mode, you can omit the {@link ApplicationVerifier}.
|
|
8577
|
+
*
|
|
8454
8578
|
* This method does not work in a Node.js environment or with {@link Auth} instances created with a
|
|
8455
8579
|
* {@link @firebase/app#FirebaseServerApp}.
|
|
8456
8580
|
*
|
|
@@ -8524,10 +8648,19 @@ async function reauthenticateWithPhoneNumber(user, phoneNumber, appVerifier) {
|
|
|
8524
8648
|
*/
|
|
8525
8649
|
async function _verifyPhoneNumber(auth, options, verifier) {
|
|
8526
8650
|
var _a;
|
|
8527
|
-
|
|
8651
|
+
if (!auth._getRecaptchaConfig()) {
|
|
8652
|
+
try {
|
|
8653
|
+
await _initializeRecaptchaConfig(auth);
|
|
8654
|
+
}
|
|
8655
|
+
catch (error) {
|
|
8656
|
+
// If an error occurs while fetching the config, there is no way to know the enablement state
|
|
8657
|
+
// of Phone provider, so we proceed with recaptcha V2 verification.
|
|
8658
|
+
// The error is likely "recaptchaKey undefined", as reCAPTCHA Enterprise is not
|
|
8659
|
+
// enabled for any provider.
|
|
8660
|
+
console.log('Failed to initialize reCAPTCHA Enterprise config. Triggering the reCAPTCHA v2 verification.');
|
|
8661
|
+
}
|
|
8662
|
+
}
|
|
8528
8663
|
try {
|
|
8529
|
-
_assert(typeof recaptchaToken === 'string', auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
8530
|
-
_assert(verifier.type === RECAPTCHA_VERIFIER_TYPE, auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
8531
8664
|
let phoneInfoOptions;
|
|
8532
8665
|
if (typeof options === 'string') {
|
|
8533
8666
|
phoneInfoOptions = {
|
|
@@ -8541,12 +8674,25 @@ async function _verifyPhoneNumber(auth, options, verifier) {
|
|
|
8541
8674
|
const session = phoneInfoOptions.session;
|
|
8542
8675
|
if ('phoneNumber' in phoneInfoOptions) {
|
|
8543
8676
|
_assert(session.type === "enroll" /* MultiFactorSessionType.ENROLL */, auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
|
|
8544
|
-
const
|
|
8677
|
+
const startPhoneMfaEnrollmentRequest = {
|
|
8545
8678
|
idToken: session.credential,
|
|
8546
8679
|
phoneEnrollmentInfo: {
|
|
8547
8680
|
phoneNumber: phoneInfoOptions.phoneNumber,
|
|
8548
|
-
|
|
8681
|
+
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
8682
|
+
}
|
|
8683
|
+
};
|
|
8684
|
+
const startEnrollPhoneMfaActionCallback = async (authInstance, request) => {
|
|
8685
|
+
// If reCAPTCHA Enterprise token is FAKE_TOKEN, fetch reCAPTCHA v2 token and inject into request.
|
|
8686
|
+
if (request.phoneEnrollmentInfo.captchaResponse === FAKE_TOKEN) {
|
|
8687
|
+
_assert((verifier === null || verifier === void 0 ? void 0 : verifier.type) === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
8688
|
+
const requestWithRecaptchaV2 = await injectRecaptchaV2Token(authInstance, request, verifier);
|
|
8689
|
+
return startEnrollPhoneMfa(authInstance, requestWithRecaptchaV2);
|
|
8549
8690
|
}
|
|
8691
|
+
return startEnrollPhoneMfa(authInstance, request);
|
|
8692
|
+
};
|
|
8693
|
+
const startPhoneMfaEnrollmentResponse = handleRecaptchaFlow(auth, startPhoneMfaEnrollmentRequest, "mfaSmsEnrollment" /* RecaptchaActionName.MFA_SMS_ENROLLMENT */, startEnrollPhoneMfaActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
|
|
8694
|
+
const response = await startPhoneMfaEnrollmentResponse.catch(error => {
|
|
8695
|
+
return Promise.reject(error);
|
|
8550
8696
|
});
|
|
8551
8697
|
return response.phoneSessionInfo.sessionInfo;
|
|
8552
8698
|
}
|
|
@@ -8555,26 +8701,52 @@ async function _verifyPhoneNumber(auth, options, verifier) {
|
|
|
8555
8701
|
const mfaEnrollmentId = ((_a = phoneInfoOptions.multiFactorHint) === null || _a === void 0 ? void 0 : _a.uid) ||
|
|
8556
8702
|
phoneInfoOptions.multiFactorUid;
|
|
8557
8703
|
_assert(mfaEnrollmentId, auth, "missing-multi-factor-info" /* AuthErrorCode.MISSING_MFA_INFO */);
|
|
8558
|
-
const
|
|
8704
|
+
const startPhoneMfaSignInRequest = {
|
|
8559
8705
|
mfaPendingCredential: session.credential,
|
|
8560
8706
|
mfaEnrollmentId,
|
|
8561
8707
|
phoneSignInInfo: {
|
|
8562
|
-
|
|
8708
|
+
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
8709
|
+
}
|
|
8710
|
+
};
|
|
8711
|
+
const startSignInPhoneMfaActionCallback = async (authInstance, request) => {
|
|
8712
|
+
// If reCAPTCHA Enterprise token is FAKE_TOKEN, fetch reCAPTCHA v2 token and inject into request.
|
|
8713
|
+
if (request.phoneSignInInfo.captchaResponse === FAKE_TOKEN) {
|
|
8714
|
+
_assert((verifier === null || verifier === void 0 ? void 0 : verifier.type) === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
8715
|
+
const requestWithRecaptchaV2 = await injectRecaptchaV2Token(authInstance, request, verifier);
|
|
8716
|
+
return startSignInPhoneMfa(authInstance, requestWithRecaptchaV2);
|
|
8563
8717
|
}
|
|
8718
|
+
return startSignInPhoneMfa(authInstance, request);
|
|
8719
|
+
};
|
|
8720
|
+
const startPhoneMfaSignInResponse = handleRecaptchaFlow(auth, startPhoneMfaSignInRequest, "mfaSmsSignIn" /* RecaptchaActionName.MFA_SMS_SIGNIN */, startSignInPhoneMfaActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
|
|
8721
|
+
const response = await startPhoneMfaSignInResponse.catch(error => {
|
|
8722
|
+
return Promise.reject(error);
|
|
8564
8723
|
});
|
|
8565
8724
|
return response.phoneResponseInfo.sessionInfo;
|
|
8566
8725
|
}
|
|
8567
8726
|
}
|
|
8568
8727
|
else {
|
|
8569
|
-
const
|
|
8728
|
+
const sendPhoneVerificationCodeRequest = {
|
|
8570
8729
|
phoneNumber: phoneInfoOptions.phoneNumber,
|
|
8571
|
-
|
|
8730
|
+
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
8731
|
+
};
|
|
8732
|
+
const sendPhoneVerificationCodeActionCallback = async (authInstance, request) => {
|
|
8733
|
+
// If reCAPTCHA Enterprise token is FAKE_TOKEN, fetch reCAPTCHA v2 token and inject into request.
|
|
8734
|
+
if (request.captchaResponse === FAKE_TOKEN) {
|
|
8735
|
+
_assert((verifier === null || verifier === void 0 ? void 0 : verifier.type) === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
8736
|
+
const requestWithRecaptchaV2 = await injectRecaptchaV2Token(authInstance, request, verifier);
|
|
8737
|
+
return sendPhoneVerificationCode(authInstance, requestWithRecaptchaV2);
|
|
8738
|
+
}
|
|
8739
|
+
return sendPhoneVerificationCode(authInstance, request);
|
|
8740
|
+
};
|
|
8741
|
+
const sendPhoneVerificationCodeResponse = handleRecaptchaFlow(auth, sendPhoneVerificationCodeRequest, "sendVerificationCode" /* RecaptchaActionName.SEND_VERIFICATION_CODE */, sendPhoneVerificationCodeActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
|
|
8742
|
+
const response = await sendPhoneVerificationCodeResponse.catch(error => {
|
|
8743
|
+
return Promise.reject(error);
|
|
8572
8744
|
});
|
|
8573
|
-
return sessionInfo;
|
|
8745
|
+
return response.sessionInfo;
|
|
8574
8746
|
}
|
|
8575
8747
|
}
|
|
8576
8748
|
finally {
|
|
8577
|
-
verifier._reset();
|
|
8749
|
+
verifier === null || verifier === void 0 ? void 0 : verifier._reset();
|
|
8578
8750
|
}
|
|
8579
8751
|
}
|
|
8580
8752
|
/**
|
|
@@ -8606,6 +8778,49 @@ async function updatePhoneNumber(user, credential) {
|
|
|
8606
8778
|
return Promise.reject(_serverAppCurrentUserOperationNotSupportedError(userInternal.auth));
|
|
8607
8779
|
}
|
|
8608
8780
|
await _link$1(userInternal, credential);
|
|
8781
|
+
}
|
|
8782
|
+
// Helper function that fetches and injects a reCAPTCHA v2 token into the request.
|
|
8783
|
+
async function injectRecaptchaV2Token(auth, request, recaptchaV2Verifier) {
|
|
8784
|
+
_assert(recaptchaV2Verifier.type === RECAPTCHA_VERIFIER_TYPE, auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
8785
|
+
const recaptchaV2Token = await recaptchaV2Verifier.verify();
|
|
8786
|
+
_assert(typeof recaptchaV2Token === 'string', auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
8787
|
+
const newRequest = Object.assign({}, request);
|
|
8788
|
+
if ('phoneEnrollmentInfo' in newRequest) {
|
|
8789
|
+
const phoneNumber = newRequest.phoneEnrollmentInfo.phoneNumber;
|
|
8790
|
+
const captchaResponse = newRequest.phoneEnrollmentInfo.captchaResponse;
|
|
8791
|
+
const clientType = newRequest
|
|
8792
|
+
.phoneEnrollmentInfo.clientType;
|
|
8793
|
+
const recaptchaVersion = newRequest.phoneEnrollmentInfo.recaptchaVersion;
|
|
8794
|
+
Object.assign(newRequest, {
|
|
8795
|
+
'phoneEnrollmentInfo': {
|
|
8796
|
+
phoneNumber,
|
|
8797
|
+
recaptchaToken: recaptchaV2Token,
|
|
8798
|
+
captchaResponse,
|
|
8799
|
+
clientType,
|
|
8800
|
+
recaptchaVersion
|
|
8801
|
+
}
|
|
8802
|
+
});
|
|
8803
|
+
return newRequest;
|
|
8804
|
+
}
|
|
8805
|
+
else if ('phoneSignInInfo' in newRequest) {
|
|
8806
|
+
const captchaResponse = newRequest.phoneSignInInfo.captchaResponse;
|
|
8807
|
+
const clientType = newRequest
|
|
8808
|
+
.phoneSignInInfo.clientType;
|
|
8809
|
+
const recaptchaVersion = newRequest.phoneSignInInfo.recaptchaVersion;
|
|
8810
|
+
Object.assign(newRequest, {
|
|
8811
|
+
'phoneSignInInfo': {
|
|
8812
|
+
recaptchaToken: recaptchaV2Token,
|
|
8813
|
+
captchaResponse,
|
|
8814
|
+
clientType,
|
|
8815
|
+
recaptchaVersion
|
|
8816
|
+
}
|
|
8817
|
+
});
|
|
8818
|
+
return newRequest;
|
|
8819
|
+
}
|
|
8820
|
+
else {
|
|
8821
|
+
Object.assign(newRequest, { 'recaptchaToken': recaptchaV2Token });
|
|
8822
|
+
return newRequest;
|
|
8823
|
+
}
|
|
8609
8824
|
}
|
|
8610
8825
|
|
|
8611
8826
|
/**
|
|
@@ -8677,12 +8892,14 @@ class PhoneAuthProvider {
|
|
|
8677
8892
|
*
|
|
8678
8893
|
* @param phoneInfoOptions - The user's {@link PhoneInfoOptions}. The phone number should be in
|
|
8679
8894
|
* E.164 format (e.g. +16505550101).
|
|
8680
|
-
* @param applicationVerifier -
|
|
8681
|
-
*
|
|
8682
|
-
* {@link RecaptchaVerifier}.
|
|
8895
|
+
* @param applicationVerifier - An {@link ApplicationVerifier}, which prevents
|
|
8896
|
+
* requests from unauthorized clients. This SDK includes an implementation
|
|
8897
|
+
* based on reCAPTCHA v2, {@link RecaptchaVerifier}. If you've enabled
|
|
8898
|
+
* reCAPTCHA Enterprise bot protection in Enforce mode, this parameter is
|
|
8899
|
+
* optional; in all other configurations, the parameter is required.
|
|
8683
8900
|
*
|
|
8684
8901
|
* @returns A Promise for a verification ID that can be passed to
|
|
8685
|
-
* {@link PhoneAuthProvider.credential} to identify this flow
|
|
8902
|
+
* {@link PhoneAuthProvider.credential} to identify this flow.
|
|
8686
8903
|
*/
|
|
8687
8904
|
verifyPhoneNumber(phoneOptions, applicationVerifier) {
|
|
8688
8905
|
return _verifyPhoneNumber(this.auth, phoneOptions, util.getModularInstance(applicationVerifier));
|
|
@@ -10441,7 +10658,7 @@ function _isEmptyString(input) {
|
|
|
10441
10658
|
}
|
|
10442
10659
|
|
|
10443
10660
|
var name = "@firebase/auth";
|
|
10444
|
-
var version = "1.
|
|
10661
|
+
var version = "1.8.0";
|
|
10445
10662
|
|
|
10446
10663
|
/**
|
|
10447
10664
|
* @license
|
|
@@ -10583,7 +10800,7 @@ function registerAuth(clientPlatform) {
|
|
|
10583
10800
|
return (auth => new AuthInterop(auth))(auth);
|
|
10584
10801
|
}, "PRIVATE" /* ComponentType.PRIVATE */).setInstantiationMode("EXPLICIT" /* InstantiationMode.EXPLICIT */));
|
|
10585
10802
|
app.registerVersion(name, version, getVersionForPlatform(clientPlatform));
|
|
10586
|
-
// BUILD_TARGET will be replaced by values like
|
|
10803
|
+
// BUILD_TARGET will be replaced by values like esm2017, cjs2017, etc during the compilation
|
|
10587
10804
|
app.registerVersion(name, version, 'cjs2017');
|
|
10588
10805
|
}
|
|
10589
10806
|
|
|
@@ -10802,4 +11019,4 @@ exports.useDeviceLanguage = useDeviceLanguage;
|
|
|
10802
11019
|
exports.validatePassword = validatePassword;
|
|
10803
11020
|
exports.verifyBeforeUpdateEmail = verifyBeforeUpdateEmail;
|
|
10804
11021
|
exports.verifyPasswordResetCode = verifyPasswordResetCode;
|
|
10805
|
-
//# sourceMappingURL=index-
|
|
11022
|
+
//# sourceMappingURL=index-b60d3212.js.map
|