@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
|
@@ -1090,6 +1090,16 @@ class RecaptchaConfig {
|
|
|
1090
1090
|
"ENFORCE" /* EnforcementState.ENFORCE */ ||
|
|
1091
1091
|
this.getProviderEnforcementState(providerStr) === "AUDIT" /* EnforcementState.AUDIT */);
|
|
1092
1092
|
}
|
|
1093
|
+
/**
|
|
1094
|
+
* Returns true if reCAPTCHA Enterprise protection is enabled in at least one provider, otherwise
|
|
1095
|
+
* returns false.
|
|
1096
|
+
*
|
|
1097
|
+
* @returns Whether or not reCAPTCHA Enterprise protection is enabled for at least one provider.
|
|
1098
|
+
*/
|
|
1099
|
+
isAnyProviderEnabled() {
|
|
1100
|
+
return (this.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */) ||
|
|
1101
|
+
this.isProviderEnabled("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */));
|
|
1102
|
+
}
|
|
1093
1103
|
}
|
|
1094
1104
|
|
|
1095
1105
|
/**
|
|
@@ -3177,6 +3187,167 @@ function _generateCallbackName(prefix) {
|
|
|
3177
3187
|
return `__${prefix}${Math.floor(Math.random() * 1000000)}`;
|
|
3178
3188
|
}
|
|
3179
3189
|
|
|
3190
|
+
/**
|
|
3191
|
+
* @license
|
|
3192
|
+
* Copyright 2020 Google LLC
|
|
3193
|
+
*
|
|
3194
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3195
|
+
* you may not use this file except in compliance with the License.
|
|
3196
|
+
* You may obtain a copy of the License at
|
|
3197
|
+
*
|
|
3198
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
3199
|
+
*
|
|
3200
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
3201
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
3202
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3203
|
+
* See the License for the specific language governing permissions and
|
|
3204
|
+
* limitations under the License.
|
|
3205
|
+
*/
|
|
3206
|
+
const _SOLVE_TIME_MS = 500;
|
|
3207
|
+
const _EXPIRATION_TIME_MS = 60000;
|
|
3208
|
+
const _WIDGET_ID_START = 1000000000000;
|
|
3209
|
+
class MockReCaptcha {
|
|
3210
|
+
constructor(auth) {
|
|
3211
|
+
this.auth = auth;
|
|
3212
|
+
this.counter = _WIDGET_ID_START;
|
|
3213
|
+
this._widgets = new Map();
|
|
3214
|
+
}
|
|
3215
|
+
render(container, parameters) {
|
|
3216
|
+
const id = this.counter;
|
|
3217
|
+
this._widgets.set(id, new MockWidget(container, this.auth.name, parameters || {}));
|
|
3218
|
+
this.counter++;
|
|
3219
|
+
return id;
|
|
3220
|
+
}
|
|
3221
|
+
reset(optWidgetId) {
|
|
3222
|
+
var _a;
|
|
3223
|
+
const id = optWidgetId || _WIDGET_ID_START;
|
|
3224
|
+
void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.delete());
|
|
3225
|
+
this._widgets.delete(id);
|
|
3226
|
+
}
|
|
3227
|
+
getResponse(optWidgetId) {
|
|
3228
|
+
var _a;
|
|
3229
|
+
const id = optWidgetId || _WIDGET_ID_START;
|
|
3230
|
+
return ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.getResponse()) || '';
|
|
3231
|
+
}
|
|
3232
|
+
async execute(optWidgetId) {
|
|
3233
|
+
var _a;
|
|
3234
|
+
const id = optWidgetId || _WIDGET_ID_START;
|
|
3235
|
+
void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.execute());
|
|
3236
|
+
return '';
|
|
3237
|
+
}
|
|
3238
|
+
}
|
|
3239
|
+
class MockGreCAPTCHATopLevel {
|
|
3240
|
+
constructor() {
|
|
3241
|
+
this.enterprise = new MockGreCAPTCHA();
|
|
3242
|
+
}
|
|
3243
|
+
ready(callback) {
|
|
3244
|
+
callback();
|
|
3245
|
+
}
|
|
3246
|
+
execute(
|
|
3247
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3248
|
+
_siteKey, _options) {
|
|
3249
|
+
return Promise.resolve('token');
|
|
3250
|
+
}
|
|
3251
|
+
render(
|
|
3252
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3253
|
+
_container, _parameters) {
|
|
3254
|
+
return '';
|
|
3255
|
+
}
|
|
3256
|
+
}
|
|
3257
|
+
class MockGreCAPTCHA {
|
|
3258
|
+
ready(callback) {
|
|
3259
|
+
callback();
|
|
3260
|
+
}
|
|
3261
|
+
execute(
|
|
3262
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3263
|
+
_siteKey, _options) {
|
|
3264
|
+
return Promise.resolve('token');
|
|
3265
|
+
}
|
|
3266
|
+
render(
|
|
3267
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3268
|
+
_container, _parameters) {
|
|
3269
|
+
return '';
|
|
3270
|
+
}
|
|
3271
|
+
}
|
|
3272
|
+
class MockWidget {
|
|
3273
|
+
constructor(containerOrId, appName, params) {
|
|
3274
|
+
this.params = params;
|
|
3275
|
+
this.timerId = null;
|
|
3276
|
+
this.deleted = false;
|
|
3277
|
+
this.responseToken = null;
|
|
3278
|
+
this.clickHandler = () => {
|
|
3279
|
+
this.execute();
|
|
3280
|
+
};
|
|
3281
|
+
const container = typeof containerOrId === 'string'
|
|
3282
|
+
? document.getElementById(containerOrId)
|
|
3283
|
+
: containerOrId;
|
|
3284
|
+
_assert(container, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */, { appName });
|
|
3285
|
+
this.container = container;
|
|
3286
|
+
this.isVisible = this.params.size !== 'invisible';
|
|
3287
|
+
if (this.isVisible) {
|
|
3288
|
+
this.execute();
|
|
3289
|
+
}
|
|
3290
|
+
else {
|
|
3291
|
+
this.container.addEventListener('click', this.clickHandler);
|
|
3292
|
+
}
|
|
3293
|
+
}
|
|
3294
|
+
getResponse() {
|
|
3295
|
+
this.checkIfDeleted();
|
|
3296
|
+
return this.responseToken;
|
|
3297
|
+
}
|
|
3298
|
+
delete() {
|
|
3299
|
+
this.checkIfDeleted();
|
|
3300
|
+
this.deleted = true;
|
|
3301
|
+
if (this.timerId) {
|
|
3302
|
+
clearTimeout(this.timerId);
|
|
3303
|
+
this.timerId = null;
|
|
3304
|
+
}
|
|
3305
|
+
this.container.removeEventListener('click', this.clickHandler);
|
|
3306
|
+
}
|
|
3307
|
+
execute() {
|
|
3308
|
+
this.checkIfDeleted();
|
|
3309
|
+
if (this.timerId) {
|
|
3310
|
+
return;
|
|
3311
|
+
}
|
|
3312
|
+
this.timerId = window.setTimeout(() => {
|
|
3313
|
+
this.responseToken = generateRandomAlphaNumericString(50);
|
|
3314
|
+
const { callback, 'expired-callback': expiredCallback } = this.params;
|
|
3315
|
+
if (callback) {
|
|
3316
|
+
try {
|
|
3317
|
+
callback(this.responseToken);
|
|
3318
|
+
}
|
|
3319
|
+
catch (e) { }
|
|
3320
|
+
}
|
|
3321
|
+
this.timerId = window.setTimeout(() => {
|
|
3322
|
+
this.timerId = null;
|
|
3323
|
+
this.responseToken = null;
|
|
3324
|
+
if (expiredCallback) {
|
|
3325
|
+
try {
|
|
3326
|
+
expiredCallback();
|
|
3327
|
+
}
|
|
3328
|
+
catch (e) { }
|
|
3329
|
+
}
|
|
3330
|
+
if (this.isVisible) {
|
|
3331
|
+
this.execute();
|
|
3332
|
+
}
|
|
3333
|
+
}, _EXPIRATION_TIME_MS);
|
|
3334
|
+
}, _SOLVE_TIME_MS);
|
|
3335
|
+
}
|
|
3336
|
+
checkIfDeleted() {
|
|
3337
|
+
if (this.deleted) {
|
|
3338
|
+
throw new Error('reCAPTCHA mock was already deleted!');
|
|
3339
|
+
}
|
|
3340
|
+
}
|
|
3341
|
+
}
|
|
3342
|
+
function generateRandomAlphaNumericString(len) {
|
|
3343
|
+
const chars = [];
|
|
3344
|
+
const allowedChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
3345
|
+
for (let i = 0; i < len; i++) {
|
|
3346
|
+
chars.push(allowedChars.charAt(Math.floor(Math.random() * allowedChars.length)));
|
|
3347
|
+
}
|
|
3348
|
+
return chars.join('');
|
|
3349
|
+
}
|
|
3350
|
+
|
|
3180
3351
|
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
3181
3352
|
const RECAPTCHA_ENTERPRISE_VERIFIER_TYPE = 'recaptcha-enterprise';
|
|
3182
3353
|
const FAKE_TOKEN = 'NO_RECAPTCHA';
|
|
@@ -3252,6 +3423,11 @@ class RecaptchaEnterpriseVerifier {
|
|
|
3252
3423
|
reject(Error('No reCAPTCHA enterprise script loaded.'));
|
|
3253
3424
|
}
|
|
3254
3425
|
}
|
|
3426
|
+
// Returns Promise for a mock token when appVerificationDisabledForTesting is true.
|
|
3427
|
+
if (this.auth.settings.appVerificationDisabledForTesting) {
|
|
3428
|
+
const mockRecaptcha = new MockGreCAPTCHATopLevel();
|
|
3429
|
+
return mockRecaptcha.execute('siteKey', { action: 'verify' });
|
|
3430
|
+
}
|
|
3255
3431
|
return new Promise((resolve, reject) => {
|
|
3256
3432
|
retrieveSiteKey(this.auth)
|
|
3257
3433
|
.then(siteKey => {
|
|
@@ -3282,17 +3458,50 @@ class RecaptchaEnterpriseVerifier {
|
|
|
3282
3458
|
});
|
|
3283
3459
|
}
|
|
3284
3460
|
}
|
|
3285
|
-
async function injectRecaptchaFields(auth, request, action,
|
|
3461
|
+
async function injectRecaptchaFields(auth, request, action, isCaptchaResp = false, isFakeToken = false) {
|
|
3286
3462
|
const verifier = new RecaptchaEnterpriseVerifier(auth);
|
|
3287
3463
|
let captchaResponse;
|
|
3288
|
-
|
|
3289
|
-
captchaResponse =
|
|
3464
|
+
if (isFakeToken) {
|
|
3465
|
+
captchaResponse = FAKE_TOKEN;
|
|
3290
3466
|
}
|
|
3291
|
-
|
|
3292
|
-
|
|
3467
|
+
else {
|
|
3468
|
+
try {
|
|
3469
|
+
captchaResponse = await verifier.verify(action);
|
|
3470
|
+
}
|
|
3471
|
+
catch (error) {
|
|
3472
|
+
captchaResponse = await verifier.verify(action, true);
|
|
3473
|
+
}
|
|
3293
3474
|
}
|
|
3294
3475
|
const newRequest = Object.assign({}, request);
|
|
3295
|
-
if (
|
|
3476
|
+
if (action === "mfaSmsEnrollment" /* RecaptchaActionName.MFA_SMS_ENROLLMENT */ ||
|
|
3477
|
+
action === "mfaSmsSignIn" /* RecaptchaActionName.MFA_SMS_SIGNIN */) {
|
|
3478
|
+
if ('phoneEnrollmentInfo' in newRequest) {
|
|
3479
|
+
const phoneNumber = newRequest.phoneEnrollmentInfo.phoneNumber;
|
|
3480
|
+
const recaptchaToken = newRequest.phoneEnrollmentInfo.recaptchaToken;
|
|
3481
|
+
Object.assign(newRequest, {
|
|
3482
|
+
'phoneEnrollmentInfo': {
|
|
3483
|
+
phoneNumber,
|
|
3484
|
+
recaptchaToken,
|
|
3485
|
+
captchaResponse,
|
|
3486
|
+
'clientType': "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */,
|
|
3487
|
+
'recaptchaVersion': "RECAPTCHA_ENTERPRISE" /* RecaptchaVersion.ENTERPRISE */
|
|
3488
|
+
}
|
|
3489
|
+
});
|
|
3490
|
+
}
|
|
3491
|
+
else if ('phoneSignInInfo' in newRequest) {
|
|
3492
|
+
const recaptchaToken = newRequest.phoneSignInInfo.recaptchaToken;
|
|
3493
|
+
Object.assign(newRequest, {
|
|
3494
|
+
'phoneSignInInfo': {
|
|
3495
|
+
recaptchaToken,
|
|
3496
|
+
captchaResponse,
|
|
3497
|
+
'clientType': "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */,
|
|
3498
|
+
'recaptchaVersion': "RECAPTCHA_ENTERPRISE" /* RecaptchaVersion.ENTERPRISE */
|
|
3499
|
+
}
|
|
3500
|
+
});
|
|
3501
|
+
}
|
|
3502
|
+
return newRequest;
|
|
3503
|
+
}
|
|
3504
|
+
if (!isCaptchaResp) {
|
|
3296
3505
|
Object.assign(newRequest, { captchaResponse });
|
|
3297
3506
|
}
|
|
3298
3507
|
else {
|
|
@@ -3304,24 +3513,64 @@ async function injectRecaptchaFields(auth, request, action, captchaResp = false)
|
|
|
3304
3513
|
});
|
|
3305
3514
|
return newRequest;
|
|
3306
3515
|
}
|
|
3307
|
-
async function handleRecaptchaFlow(authInstance, request, actionName, actionMethod) {
|
|
3308
|
-
var _a;
|
|
3309
|
-
if (
|
|
3310
|
-
|
|
3311
|
-
|
|
3312
|
-
|
|
3516
|
+
async function handleRecaptchaFlow(authInstance, request, actionName, actionMethod, recaptchaAuthProvider) {
|
|
3517
|
+
var _a, _b;
|
|
3518
|
+
if (recaptchaAuthProvider === "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */) {
|
|
3519
|
+
if ((_a = authInstance
|
|
3520
|
+
._getRecaptchaConfig()) === null || _a === void 0 ? void 0 : _a.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */)) {
|
|
3521
|
+
const requestWithRecaptcha = await injectRecaptchaFields(authInstance, request, actionName, actionName === "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */);
|
|
3522
|
+
return actionMethod(authInstance, requestWithRecaptcha);
|
|
3523
|
+
}
|
|
3524
|
+
else {
|
|
3525
|
+
return actionMethod(authInstance, request).catch(async (error) => {
|
|
3526
|
+
if (error.code === `auth/${"missing-recaptcha-token" /* AuthErrorCode.MISSING_RECAPTCHA_TOKEN */}`) {
|
|
3527
|
+
console.log(`${actionName} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`);
|
|
3528
|
+
const requestWithRecaptcha = await injectRecaptchaFields(authInstance, request, actionName, actionName === "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */);
|
|
3529
|
+
return actionMethod(authInstance, requestWithRecaptcha);
|
|
3530
|
+
}
|
|
3531
|
+
else {
|
|
3532
|
+
return Promise.reject(error);
|
|
3533
|
+
}
|
|
3534
|
+
});
|
|
3535
|
+
}
|
|
3313
3536
|
}
|
|
3314
|
-
else {
|
|
3315
|
-
|
|
3316
|
-
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
|
|
3321
|
-
|
|
3537
|
+
else if (recaptchaAuthProvider === "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */) {
|
|
3538
|
+
if ((_b = authInstance
|
|
3539
|
+
._getRecaptchaConfig()) === null || _b === void 0 ? void 0 : _b.isProviderEnabled("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */)) {
|
|
3540
|
+
const requestWithRecaptcha = await injectRecaptchaFields(authInstance, request, actionName);
|
|
3541
|
+
return actionMethod(authInstance, requestWithRecaptcha).catch(async (error) => {
|
|
3542
|
+
var _a;
|
|
3543
|
+
if (((_a = authInstance
|
|
3544
|
+
._getRecaptchaConfig()) === null || _a === void 0 ? void 0 : _a.getProviderEnforcementState("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */)) === "AUDIT" /* EnforcementState.AUDIT */) {
|
|
3545
|
+
// AUDIT mode
|
|
3546
|
+
if (error.code === `auth/${"missing-recaptcha-token" /* AuthErrorCode.MISSING_RECAPTCHA_TOKEN */}` ||
|
|
3547
|
+
error.code === `auth/${"invalid-app-credential" /* AuthErrorCode.INVALID_APP_CREDENTIAL */}`) {
|
|
3548
|
+
console.log(`Failed to verify with reCAPTCHA Enterprise. Automatically triggering the reCAPTCHA v2 flow to complete the ${actionName} flow.`);
|
|
3549
|
+
// reCAPTCHA Enterprise token is missing or reCAPTCHA Enterprise token
|
|
3550
|
+
// check fails.
|
|
3551
|
+
// Fallback to reCAPTCHA v2 flow.
|
|
3552
|
+
const requestWithRecaptchaFields = await injectRecaptchaFields(authInstance, request, actionName, false, // isCaptchaResp
|
|
3553
|
+
true // isFakeToken
|
|
3554
|
+
);
|
|
3555
|
+
// This will call the PhoneApiCaller to fetch and inject reCAPTCHA v2 token.
|
|
3556
|
+
return actionMethod(authInstance, requestWithRecaptchaFields);
|
|
3557
|
+
}
|
|
3558
|
+
}
|
|
3559
|
+
// ENFORCE mode or AUDIT mode with any other error.
|
|
3322
3560
|
return Promise.reject(error);
|
|
3323
|
-
}
|
|
3324
|
-
}
|
|
3561
|
+
});
|
|
3562
|
+
}
|
|
3563
|
+
else {
|
|
3564
|
+
// Do reCAPTCHA v2 flow.
|
|
3565
|
+
const requestWithRecaptchaFields = await injectRecaptchaFields(authInstance, request, actionName, false, // isCaptchaResp
|
|
3566
|
+
true // isFakeToken
|
|
3567
|
+
);
|
|
3568
|
+
// This will call the PhoneApiCaller to fetch and inject v2 token.
|
|
3569
|
+
return actionMethod(authInstance, requestWithRecaptchaFields);
|
|
3570
|
+
}
|
|
3571
|
+
}
|
|
3572
|
+
else {
|
|
3573
|
+
return Promise.reject(recaptchaAuthProvider + ' provider is not supported.');
|
|
3325
3574
|
}
|
|
3326
3575
|
}
|
|
3327
3576
|
async function _initializeRecaptchaConfig(auth) {
|
|
@@ -3337,7 +3586,7 @@ async function _initializeRecaptchaConfig(auth) {
|
|
|
3337
3586
|
else {
|
|
3338
3587
|
authInternal._tenantRecaptchaConfigs[authInternal.tenantId] = config;
|
|
3339
3588
|
}
|
|
3340
|
-
if (config.
|
|
3589
|
+
if (config.isAnyProviderEnabled()) {
|
|
3341
3590
|
const verifier = new RecaptchaEnterpriseVerifier(authInternal);
|
|
3342
3591
|
void verifier.verify();
|
|
3343
3592
|
}
|
|
@@ -3763,7 +4012,7 @@ class EmailAuthCredential extends AuthCredential {
|
|
|
3763
4012
|
password: this._password,
|
|
3764
4013
|
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
3765
4014
|
};
|
|
3766
|
-
return handleRecaptchaFlow(auth, request, "signInWithPassword" /* RecaptchaActionName.SIGN_IN_WITH_PASSWORD */, signInWithPassword);
|
|
4015
|
+
return handleRecaptchaFlow(auth, request, "signInWithPassword" /* RecaptchaActionName.SIGN_IN_WITH_PASSWORD */, signInWithPassword, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
|
|
3767
4016
|
case "emailLink" /* SignInMethod.EMAIL_LINK */:
|
|
3768
4017
|
return signInWithEmailLink$1(auth, {
|
|
3769
4018
|
email: this._email,
|
|
@@ -3784,7 +4033,7 @@ class EmailAuthCredential extends AuthCredential {
|
|
|
3784
4033
|
password: this._password,
|
|
3785
4034
|
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
3786
4035
|
};
|
|
3787
|
-
return handleRecaptchaFlow(auth, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, linkEmailPassword);
|
|
4036
|
+
return handleRecaptchaFlow(auth, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, linkEmailPassword, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
|
|
3788
4037
|
case "emailLink" /* SignInMethod.EMAIL_LINK */:
|
|
3789
4038
|
return signInWithEmailLinkForLinking(auth, {
|
|
3790
4039
|
idToken,
|
|
@@ -5779,7 +6028,7 @@ async function sendPasswordResetEmail(auth, email, actionCodeSettings) {
|
|
|
5779
6028
|
if (actionCodeSettings) {
|
|
5780
6029
|
_setActionCodeSettingsOnRequest(authInternal, request, actionCodeSettings);
|
|
5781
6030
|
}
|
|
5782
|
-
await handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendPasswordResetEmail$1);
|
|
6031
|
+
await handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendPasswordResetEmail$1, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
|
|
5783
6032
|
}
|
|
5784
6033
|
/**
|
|
5785
6034
|
* Completes the password reset process, given a confirmation code and new password.
|
|
@@ -5912,7 +6161,7 @@ async function createUserWithEmailAndPassword(auth, email, password) {
|
|
|
5912
6161
|
password,
|
|
5913
6162
|
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
5914
6163
|
};
|
|
5915
|
-
const signUpResponse = handleRecaptchaFlow(authInternal, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, signUp);
|
|
6164
|
+
const signUpResponse = handleRecaptchaFlow(authInternal, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, signUp, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
|
|
5916
6165
|
const response = await signUpResponse.catch(error => {
|
|
5917
6166
|
if (error.code === `auth/${"password-does-not-meet-requirements" /* AuthErrorCode.PASSWORD_DOES_NOT_MEET_REQUIREMENTS */}`) {
|
|
5918
6167
|
void recachePasswordPolicy(auth);
|
|
@@ -6026,7 +6275,7 @@ async function sendSignInLinkToEmail(auth, email, actionCodeSettings) {
|
|
|
6026
6275
|
}
|
|
6027
6276
|
}
|
|
6028
6277
|
setActionCodeSettings(request, actionCodeSettings);
|
|
6029
|
-
await handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendSignInLinkToEmail$1);
|
|
6278
|
+
await handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendSignInLinkToEmail$1, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
|
|
6030
6279
|
}
|
|
6031
6280
|
/**
|
|
6032
6281
|
* Checks if an incoming link is a sign-in with email link suitable for {@link signInWithEmailLink}.
|
|
@@ -7961,134 +8210,6 @@ function finalizeSignInTotpMfa(auth, request) {
|
|
|
7961
8210
|
return _performApiRequest(auth, "POST" /* HttpMethod.POST */, "/v2/accounts/mfaSignIn:finalize" /* Endpoint.FINALIZE_MFA_SIGN_IN */, _addTidIfNecessary(auth, request));
|
|
7962
8211
|
}
|
|
7963
8212
|
|
|
7964
|
-
/**
|
|
7965
|
-
* @license
|
|
7966
|
-
* Copyright 2020 Google LLC
|
|
7967
|
-
*
|
|
7968
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7969
|
-
* you may not use this file except in compliance with the License.
|
|
7970
|
-
* You may obtain a copy of the License at
|
|
7971
|
-
*
|
|
7972
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
7973
|
-
*
|
|
7974
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
7975
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
7976
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
7977
|
-
* See the License for the specific language governing permissions and
|
|
7978
|
-
* limitations under the License.
|
|
7979
|
-
*/
|
|
7980
|
-
const _SOLVE_TIME_MS = 500;
|
|
7981
|
-
const _EXPIRATION_TIME_MS = 60000;
|
|
7982
|
-
const _WIDGET_ID_START = 1000000000000;
|
|
7983
|
-
class MockReCaptcha {
|
|
7984
|
-
constructor(auth) {
|
|
7985
|
-
this.auth = auth;
|
|
7986
|
-
this.counter = _WIDGET_ID_START;
|
|
7987
|
-
this._widgets = new Map();
|
|
7988
|
-
}
|
|
7989
|
-
render(container, parameters) {
|
|
7990
|
-
const id = this.counter;
|
|
7991
|
-
this._widgets.set(id, new MockWidget(container, this.auth.name, parameters || {}));
|
|
7992
|
-
this.counter++;
|
|
7993
|
-
return id;
|
|
7994
|
-
}
|
|
7995
|
-
reset(optWidgetId) {
|
|
7996
|
-
var _a;
|
|
7997
|
-
const id = optWidgetId || _WIDGET_ID_START;
|
|
7998
|
-
void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.delete());
|
|
7999
|
-
this._widgets.delete(id);
|
|
8000
|
-
}
|
|
8001
|
-
getResponse(optWidgetId) {
|
|
8002
|
-
var _a;
|
|
8003
|
-
const id = optWidgetId || _WIDGET_ID_START;
|
|
8004
|
-
return ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.getResponse()) || '';
|
|
8005
|
-
}
|
|
8006
|
-
async execute(optWidgetId) {
|
|
8007
|
-
var _a;
|
|
8008
|
-
const id = optWidgetId || _WIDGET_ID_START;
|
|
8009
|
-
void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.execute());
|
|
8010
|
-
return '';
|
|
8011
|
-
}
|
|
8012
|
-
}
|
|
8013
|
-
class MockWidget {
|
|
8014
|
-
constructor(containerOrId, appName, params) {
|
|
8015
|
-
this.params = params;
|
|
8016
|
-
this.timerId = null;
|
|
8017
|
-
this.deleted = false;
|
|
8018
|
-
this.responseToken = null;
|
|
8019
|
-
this.clickHandler = () => {
|
|
8020
|
-
this.execute();
|
|
8021
|
-
};
|
|
8022
|
-
const container = typeof containerOrId === 'string'
|
|
8023
|
-
? document.getElementById(containerOrId)
|
|
8024
|
-
: containerOrId;
|
|
8025
|
-
_assert(container, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */, { appName });
|
|
8026
|
-
this.container = container;
|
|
8027
|
-
this.isVisible = this.params.size !== 'invisible';
|
|
8028
|
-
if (this.isVisible) {
|
|
8029
|
-
this.execute();
|
|
8030
|
-
}
|
|
8031
|
-
else {
|
|
8032
|
-
this.container.addEventListener('click', this.clickHandler);
|
|
8033
|
-
}
|
|
8034
|
-
}
|
|
8035
|
-
getResponse() {
|
|
8036
|
-
this.checkIfDeleted();
|
|
8037
|
-
return this.responseToken;
|
|
8038
|
-
}
|
|
8039
|
-
delete() {
|
|
8040
|
-
this.checkIfDeleted();
|
|
8041
|
-
this.deleted = true;
|
|
8042
|
-
if (this.timerId) {
|
|
8043
|
-
clearTimeout(this.timerId);
|
|
8044
|
-
this.timerId = null;
|
|
8045
|
-
}
|
|
8046
|
-
this.container.removeEventListener('click', this.clickHandler);
|
|
8047
|
-
}
|
|
8048
|
-
execute() {
|
|
8049
|
-
this.checkIfDeleted();
|
|
8050
|
-
if (this.timerId) {
|
|
8051
|
-
return;
|
|
8052
|
-
}
|
|
8053
|
-
this.timerId = window.setTimeout(() => {
|
|
8054
|
-
this.responseToken = generateRandomAlphaNumericString(50);
|
|
8055
|
-
const { callback, 'expired-callback': expiredCallback } = this.params;
|
|
8056
|
-
if (callback) {
|
|
8057
|
-
try {
|
|
8058
|
-
callback(this.responseToken);
|
|
8059
|
-
}
|
|
8060
|
-
catch (e) { }
|
|
8061
|
-
}
|
|
8062
|
-
this.timerId = window.setTimeout(() => {
|
|
8063
|
-
this.timerId = null;
|
|
8064
|
-
this.responseToken = null;
|
|
8065
|
-
if (expiredCallback) {
|
|
8066
|
-
try {
|
|
8067
|
-
expiredCallback();
|
|
8068
|
-
}
|
|
8069
|
-
catch (e) { }
|
|
8070
|
-
}
|
|
8071
|
-
if (this.isVisible) {
|
|
8072
|
-
this.execute();
|
|
8073
|
-
}
|
|
8074
|
-
}, _EXPIRATION_TIME_MS);
|
|
8075
|
-
}, _SOLVE_TIME_MS);
|
|
8076
|
-
}
|
|
8077
|
-
checkIfDeleted() {
|
|
8078
|
-
if (this.deleted) {
|
|
8079
|
-
throw new Error('reCAPTCHA mock was already deleted!');
|
|
8080
|
-
}
|
|
8081
|
-
}
|
|
8082
|
-
}
|
|
8083
|
-
function generateRandomAlphaNumericString(len) {
|
|
8084
|
-
const chars = [];
|
|
8085
|
-
const allowedChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
8086
|
-
for (let i = 0; i < len; i++) {
|
|
8087
|
-
chars.push(allowedChars.charAt(Math.floor(Math.random() * allowedChars.length)));
|
|
8088
|
-
}
|
|
8089
|
-
return chars.join('');
|
|
8090
|
-
}
|
|
8091
|
-
|
|
8092
8213
|
/**
|
|
8093
8214
|
* @license
|
|
8094
8215
|
* Copyright 2020 Google LLC
|
|
@@ -8443,12 +8564,15 @@ class ConfirmationResultImpl {
|
|
|
8443
8564
|
* provides the code sent to their phone, call {@link ConfirmationResult.confirm}
|
|
8444
8565
|
* with the code to sign the user in.
|
|
8445
8566
|
*
|
|
8446
|
-
* For abuse prevention, this method
|
|
8447
|
-
* This SDK includes
|
|
8567
|
+
* For abuse prevention, this method requires a {@link ApplicationVerifier}.
|
|
8568
|
+
* This SDK includes an implementation based on reCAPTCHA v2, {@link RecaptchaVerifier}.
|
|
8448
8569
|
* This function can work on other platforms that do not support the
|
|
8449
8570
|
* {@link RecaptchaVerifier} (like React Native), but you need to use a
|
|
8450
8571
|
* third-party {@link ApplicationVerifier} implementation.
|
|
8451
8572
|
*
|
|
8573
|
+
* If you've enabled project-level reCAPTCHA Enterprise bot protection in
|
|
8574
|
+
* Enforce mode, you can omit the {@link ApplicationVerifier}.
|
|
8575
|
+
*
|
|
8452
8576
|
* This method does not work in a Node.js environment or with {@link Auth} instances created with a
|
|
8453
8577
|
* {@link @firebase/app#FirebaseServerApp}.
|
|
8454
8578
|
*
|
|
@@ -8522,10 +8646,19 @@ async function reauthenticateWithPhoneNumber(user, phoneNumber, appVerifier) {
|
|
|
8522
8646
|
*/
|
|
8523
8647
|
async function _verifyPhoneNumber(auth, options, verifier) {
|
|
8524
8648
|
var _a;
|
|
8525
|
-
|
|
8649
|
+
if (!auth._getRecaptchaConfig()) {
|
|
8650
|
+
try {
|
|
8651
|
+
await _initializeRecaptchaConfig(auth);
|
|
8652
|
+
}
|
|
8653
|
+
catch (error) {
|
|
8654
|
+
// If an error occurs while fetching the config, there is no way to know the enablement state
|
|
8655
|
+
// of Phone provider, so we proceed with recaptcha V2 verification.
|
|
8656
|
+
// The error is likely "recaptchaKey undefined", as reCAPTCHA Enterprise is not
|
|
8657
|
+
// enabled for any provider.
|
|
8658
|
+
console.log('Failed to initialize reCAPTCHA Enterprise config. Triggering the reCAPTCHA v2 verification.');
|
|
8659
|
+
}
|
|
8660
|
+
}
|
|
8526
8661
|
try {
|
|
8527
|
-
_assert(typeof recaptchaToken === 'string', auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
8528
|
-
_assert(verifier.type === RECAPTCHA_VERIFIER_TYPE, auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
8529
8662
|
let phoneInfoOptions;
|
|
8530
8663
|
if (typeof options === 'string') {
|
|
8531
8664
|
phoneInfoOptions = {
|
|
@@ -8539,12 +8672,25 @@ async function _verifyPhoneNumber(auth, options, verifier) {
|
|
|
8539
8672
|
const session = phoneInfoOptions.session;
|
|
8540
8673
|
if ('phoneNumber' in phoneInfoOptions) {
|
|
8541
8674
|
_assert(session.type === "enroll" /* MultiFactorSessionType.ENROLL */, auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
|
|
8542
|
-
const
|
|
8675
|
+
const startPhoneMfaEnrollmentRequest = {
|
|
8543
8676
|
idToken: session.credential,
|
|
8544
8677
|
phoneEnrollmentInfo: {
|
|
8545
8678
|
phoneNumber: phoneInfoOptions.phoneNumber,
|
|
8546
|
-
|
|
8679
|
+
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
8680
|
+
}
|
|
8681
|
+
};
|
|
8682
|
+
const startEnrollPhoneMfaActionCallback = async (authInstance, request) => {
|
|
8683
|
+
// If reCAPTCHA Enterprise token is FAKE_TOKEN, fetch reCAPTCHA v2 token and inject into request.
|
|
8684
|
+
if (request.phoneEnrollmentInfo.captchaResponse === FAKE_TOKEN) {
|
|
8685
|
+
_assert((verifier === null || verifier === void 0 ? void 0 : verifier.type) === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
8686
|
+
const requestWithRecaptchaV2 = await injectRecaptchaV2Token(authInstance, request, verifier);
|
|
8687
|
+
return startEnrollPhoneMfa(authInstance, requestWithRecaptchaV2);
|
|
8547
8688
|
}
|
|
8689
|
+
return startEnrollPhoneMfa(authInstance, request);
|
|
8690
|
+
};
|
|
8691
|
+
const startPhoneMfaEnrollmentResponse = handleRecaptchaFlow(auth, startPhoneMfaEnrollmentRequest, "mfaSmsEnrollment" /* RecaptchaActionName.MFA_SMS_ENROLLMENT */, startEnrollPhoneMfaActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
|
|
8692
|
+
const response = await startPhoneMfaEnrollmentResponse.catch(error => {
|
|
8693
|
+
return Promise.reject(error);
|
|
8548
8694
|
});
|
|
8549
8695
|
return response.phoneSessionInfo.sessionInfo;
|
|
8550
8696
|
}
|
|
@@ -8553,26 +8699,52 @@ async function _verifyPhoneNumber(auth, options, verifier) {
|
|
|
8553
8699
|
const mfaEnrollmentId = ((_a = phoneInfoOptions.multiFactorHint) === null || _a === void 0 ? void 0 : _a.uid) ||
|
|
8554
8700
|
phoneInfoOptions.multiFactorUid;
|
|
8555
8701
|
_assert(mfaEnrollmentId, auth, "missing-multi-factor-info" /* AuthErrorCode.MISSING_MFA_INFO */);
|
|
8556
|
-
const
|
|
8702
|
+
const startPhoneMfaSignInRequest = {
|
|
8557
8703
|
mfaPendingCredential: session.credential,
|
|
8558
8704
|
mfaEnrollmentId,
|
|
8559
8705
|
phoneSignInInfo: {
|
|
8560
|
-
|
|
8706
|
+
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
8707
|
+
}
|
|
8708
|
+
};
|
|
8709
|
+
const startSignInPhoneMfaActionCallback = async (authInstance, request) => {
|
|
8710
|
+
// If reCAPTCHA Enterprise token is FAKE_TOKEN, fetch reCAPTCHA v2 token and inject into request.
|
|
8711
|
+
if (request.phoneSignInInfo.captchaResponse === FAKE_TOKEN) {
|
|
8712
|
+
_assert((verifier === null || verifier === void 0 ? void 0 : verifier.type) === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
8713
|
+
const requestWithRecaptchaV2 = await injectRecaptchaV2Token(authInstance, request, verifier);
|
|
8714
|
+
return startSignInPhoneMfa(authInstance, requestWithRecaptchaV2);
|
|
8561
8715
|
}
|
|
8716
|
+
return startSignInPhoneMfa(authInstance, request);
|
|
8717
|
+
};
|
|
8718
|
+
const startPhoneMfaSignInResponse = handleRecaptchaFlow(auth, startPhoneMfaSignInRequest, "mfaSmsSignIn" /* RecaptchaActionName.MFA_SMS_SIGNIN */, startSignInPhoneMfaActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
|
|
8719
|
+
const response = await startPhoneMfaSignInResponse.catch(error => {
|
|
8720
|
+
return Promise.reject(error);
|
|
8562
8721
|
});
|
|
8563
8722
|
return response.phoneResponseInfo.sessionInfo;
|
|
8564
8723
|
}
|
|
8565
8724
|
}
|
|
8566
8725
|
else {
|
|
8567
|
-
const
|
|
8726
|
+
const sendPhoneVerificationCodeRequest = {
|
|
8568
8727
|
phoneNumber: phoneInfoOptions.phoneNumber,
|
|
8569
|
-
|
|
8728
|
+
clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
|
|
8729
|
+
};
|
|
8730
|
+
const sendPhoneVerificationCodeActionCallback = async (authInstance, request) => {
|
|
8731
|
+
// If reCAPTCHA Enterprise token is FAKE_TOKEN, fetch reCAPTCHA v2 token and inject into request.
|
|
8732
|
+
if (request.captchaResponse === FAKE_TOKEN) {
|
|
8733
|
+
_assert((verifier === null || verifier === void 0 ? void 0 : verifier.type) === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
8734
|
+
const requestWithRecaptchaV2 = await injectRecaptchaV2Token(authInstance, request, verifier);
|
|
8735
|
+
return sendPhoneVerificationCode(authInstance, requestWithRecaptchaV2);
|
|
8736
|
+
}
|
|
8737
|
+
return sendPhoneVerificationCode(authInstance, request);
|
|
8738
|
+
};
|
|
8739
|
+
const sendPhoneVerificationCodeResponse = handleRecaptchaFlow(auth, sendPhoneVerificationCodeRequest, "sendVerificationCode" /* RecaptchaActionName.SEND_VERIFICATION_CODE */, sendPhoneVerificationCodeActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
|
|
8740
|
+
const response = await sendPhoneVerificationCodeResponse.catch(error => {
|
|
8741
|
+
return Promise.reject(error);
|
|
8570
8742
|
});
|
|
8571
|
-
return sessionInfo;
|
|
8743
|
+
return response.sessionInfo;
|
|
8572
8744
|
}
|
|
8573
8745
|
}
|
|
8574
8746
|
finally {
|
|
8575
|
-
verifier._reset();
|
|
8747
|
+
verifier === null || verifier === void 0 ? void 0 : verifier._reset();
|
|
8576
8748
|
}
|
|
8577
8749
|
}
|
|
8578
8750
|
/**
|
|
@@ -8604,6 +8776,49 @@ async function updatePhoneNumber(user, credential) {
|
|
|
8604
8776
|
return Promise.reject(_serverAppCurrentUserOperationNotSupportedError(userInternal.auth));
|
|
8605
8777
|
}
|
|
8606
8778
|
await _link$1(userInternal, credential);
|
|
8779
|
+
}
|
|
8780
|
+
// Helper function that fetches and injects a reCAPTCHA v2 token into the request.
|
|
8781
|
+
async function injectRecaptchaV2Token(auth, request, recaptchaV2Verifier) {
|
|
8782
|
+
_assert(recaptchaV2Verifier.type === RECAPTCHA_VERIFIER_TYPE, auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
8783
|
+
const recaptchaV2Token = await recaptchaV2Verifier.verify();
|
|
8784
|
+
_assert(typeof recaptchaV2Token === 'string', auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
|
|
8785
|
+
const newRequest = Object.assign({}, request);
|
|
8786
|
+
if ('phoneEnrollmentInfo' in newRequest) {
|
|
8787
|
+
const phoneNumber = newRequest.phoneEnrollmentInfo.phoneNumber;
|
|
8788
|
+
const captchaResponse = newRequest.phoneEnrollmentInfo.captchaResponse;
|
|
8789
|
+
const clientType = newRequest
|
|
8790
|
+
.phoneEnrollmentInfo.clientType;
|
|
8791
|
+
const recaptchaVersion = newRequest.phoneEnrollmentInfo.recaptchaVersion;
|
|
8792
|
+
Object.assign(newRequest, {
|
|
8793
|
+
'phoneEnrollmentInfo': {
|
|
8794
|
+
phoneNumber,
|
|
8795
|
+
recaptchaToken: recaptchaV2Token,
|
|
8796
|
+
captchaResponse,
|
|
8797
|
+
clientType,
|
|
8798
|
+
recaptchaVersion
|
|
8799
|
+
}
|
|
8800
|
+
});
|
|
8801
|
+
return newRequest;
|
|
8802
|
+
}
|
|
8803
|
+
else if ('phoneSignInInfo' in newRequest) {
|
|
8804
|
+
const captchaResponse = newRequest.phoneSignInInfo.captchaResponse;
|
|
8805
|
+
const clientType = newRequest
|
|
8806
|
+
.phoneSignInInfo.clientType;
|
|
8807
|
+
const recaptchaVersion = newRequest.phoneSignInInfo.recaptchaVersion;
|
|
8808
|
+
Object.assign(newRequest, {
|
|
8809
|
+
'phoneSignInInfo': {
|
|
8810
|
+
recaptchaToken: recaptchaV2Token,
|
|
8811
|
+
captchaResponse,
|
|
8812
|
+
clientType,
|
|
8813
|
+
recaptchaVersion
|
|
8814
|
+
}
|
|
8815
|
+
});
|
|
8816
|
+
return newRequest;
|
|
8817
|
+
}
|
|
8818
|
+
else {
|
|
8819
|
+
Object.assign(newRequest, { 'recaptchaToken': recaptchaV2Token });
|
|
8820
|
+
return newRequest;
|
|
8821
|
+
}
|
|
8607
8822
|
}
|
|
8608
8823
|
|
|
8609
8824
|
/**
|
|
@@ -8675,12 +8890,14 @@ class PhoneAuthProvider {
|
|
|
8675
8890
|
*
|
|
8676
8891
|
* @param phoneInfoOptions - The user's {@link PhoneInfoOptions}. The phone number should be in
|
|
8677
8892
|
* E.164 format (e.g. +16505550101).
|
|
8678
|
-
* @param applicationVerifier -
|
|
8679
|
-
*
|
|
8680
|
-
* {@link RecaptchaVerifier}.
|
|
8893
|
+
* @param applicationVerifier - An {@link ApplicationVerifier}, which prevents
|
|
8894
|
+
* requests from unauthorized clients. This SDK includes an implementation
|
|
8895
|
+
* based on reCAPTCHA v2, {@link RecaptchaVerifier}. If you've enabled
|
|
8896
|
+
* reCAPTCHA Enterprise bot protection in Enforce mode, this parameter is
|
|
8897
|
+
* optional; in all other configurations, the parameter is required.
|
|
8681
8898
|
*
|
|
8682
8899
|
* @returns A Promise for a verification ID that can be passed to
|
|
8683
|
-
* {@link PhoneAuthProvider.credential} to identify this flow
|
|
8900
|
+
* {@link PhoneAuthProvider.credential} to identify this flow.
|
|
8684
8901
|
*/
|
|
8685
8902
|
verifyPhoneNumber(phoneOptions, applicationVerifier) {
|
|
8686
8903
|
return _verifyPhoneNumber(this.auth, phoneOptions, getModularInstance(applicationVerifier));
|
|
@@ -10439,7 +10656,7 @@ function _isEmptyString(input) {
|
|
|
10439
10656
|
}
|
|
10440
10657
|
|
|
10441
10658
|
var name = "@firebase/auth";
|
|
10442
|
-
var version = "1.
|
|
10659
|
+
var version = "1.8.0";
|
|
10443
10660
|
|
|
10444
10661
|
/**
|
|
10445
10662
|
* @license
|
|
@@ -10581,7 +10798,7 @@ function registerAuth(clientPlatform) {
|
|
|
10581
10798
|
return (auth => new AuthInterop(auth))(auth);
|
|
10582
10799
|
}, "PRIVATE" /* ComponentType.PRIVATE */).setInstantiationMode("EXPLICIT" /* InstantiationMode.EXPLICIT */));
|
|
10583
10800
|
registerVersion(name, version, getVersionForPlatform(clientPlatform));
|
|
10584
|
-
// BUILD_TARGET will be replaced by values like
|
|
10801
|
+
// BUILD_TARGET will be replaced by values like esm2017, cjs2017, etc during the compilation
|
|
10585
10802
|
registerVersion(name, version, 'esm2017');
|
|
10586
10803
|
}
|
|
10587
10804
|
|
|
@@ -10694,4 +10911,4 @@ _setExternalJSProvider({
|
|
|
10694
10911
|
registerAuth("Browser" /* ClientPlatform.BROWSER */);
|
|
10695
10912
|
|
|
10696
10913
|
export { TwitterAuthProvider as $, ActionCodeOperation as A, updateCurrentUser as B, signOut as C, revokeAccessToken as D, deleteUser as E, FactorId as F, debugErrorMap as G, prodErrorMap as H, AUTH_ERROR_CODES_MAP_DO_NOT_USE_INTERNALLY as I, initializeAuth as J, connectAuthEmulator as K, AuthCredential as L, EmailAuthCredential as M, OAuthCredential as N, OperationType as O, PhoneAuthProvider as P, PhoneAuthCredential as Q, RecaptchaVerifier as R, SignInMethod as S, TotpMultiFactorGenerator as T, inMemoryPersistence as U, EmailAuthProvider as V, FacebookAuthProvider as W, GoogleAuthProvider as X, GithubAuthProvider as Y, OAuthProvider as Z, SAMLAuthProvider as _, browserSessionPersistence as a, signInAnonymously as a0, signInWithCredential as a1, linkWithCredential as a2, reauthenticateWithCredential as a3, signInWithCustomToken as a4, sendPasswordResetEmail as a5, confirmPasswordReset as a6, applyActionCode as a7, checkActionCode as a8, verifyPasswordResetCode as a9, _isIOS7Or8 as aA, _createError as aB, _assert as aC, AuthEventManager as aD, _getInstance as aE, _persistenceKeyName as aF, _getRedirectResult as aG, _overrideRedirectResult as aH, _clearRedirectOutcomes as aI, _castAuth as aJ, UserImpl as aK, AuthImpl as aL, _getClientVersion as aM, _generateEventId as aN, AuthPopup as aO, FetchProvider as aP, SAMLAuthCredential as aQ, createUserWithEmailAndPassword as aa, signInWithEmailAndPassword as ab, sendSignInLinkToEmail as ac, isSignInWithEmailLink as ad, signInWithEmailLink as ae, fetchSignInMethodsForEmail as af, sendEmailVerification as ag, verifyBeforeUpdateEmail as ah, ActionCodeURL as ai, parseActionCodeURL as aj, updateProfile as ak, updateEmail as al, updatePassword as am, getIdToken as an, getIdTokenResult as ao, unlink as ap, getAdditionalUserInfo as aq, reload as ar, getMultiFactorResolver as as, multiFactor as at, debugAssert as au, _isIOS as av, _isAndroid as aw, _fail as ax, _getRedirectUrl as ay, _getProjectConfig as az, browserLocalPersistence as b, signInWithPopup as c, linkWithPopup as d, reauthenticateWithPopup as e, signInWithRedirect as f, linkWithRedirect as g, reauthenticateWithRedirect as h, indexedDBLocalPersistence as i, getRedirectResult as j, browserPopupRedirectResolver as k, linkWithPhoneNumber as l, PhoneMultiFactorGenerator as m, TotpSecret as n, getAuth as o, ProviderId as p, setPersistence as q, reauthenticateWithPhoneNumber as r, signInWithPhoneNumber as s, initializeRecaptchaConfig as t, updatePhoneNumber as u, validatePassword as v, onIdTokenChanged as w, beforeAuthStateChanged as x, onAuthStateChanged as y, useDeviceLanguage as z };
|
|
10697
|
-
//# sourceMappingURL=index-
|
|
10914
|
+
//# sourceMappingURL=index-a7d5cfcc.js.map
|