Skip to content

Implement reCAPTCHA Enterprise flow for phone provider #7814

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Apr 10, 2024

Conversation

NhienLam
Copy link
Contributor

@NhienLam NhienLam commented Nov 27, 2023

Discussion

reCAPTCHA Enterprise + phone auth integration.

  • Update _verifyPhoneNumber to fetch and use reCAPTCHA Enterprise token
  • Update handleRecaptchaFlow to handle Phone Provider
  • Make ApplicationVerifier params optional in phone public methods
  • Update RecaptchaEnterpriseVerifier.verify() to return a mock when appVerificationDisabledForTesting is true

Testing

  • Unit tests
  • CI when Recaptcha Enterprise is disabled
  • Tested the following flows with the demo app:
    • Phone Auth and SMS MFA
      • reCAPTCHA Enterprise is disabled, fallback to reCAPTCHA v2 flow
      • reCAPTCHA Enterprise is enabled, error out with a missing client identifier error (expected since backend is not yet ready)
    • Email auth with reCAPTCHA Enterprise

Copy link

changeset-bot bot commented Nov 27, 2023

⚠️ No Changeset found

Latest commit: 3af4d66

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@NhienLam NhienLam marked this pull request as draft November 27, 2023 03:19
@google-oss-bot
Copy link
Contributor

google-oss-bot commented Nov 27, 2023

Size Report 1

Affected Products

  • @firebase/auth

    TypeBase (d8fcd95)Merge (ff9b0d7)Diff
    browser183 kB188 kB+5.37 kB (+2.9%)
    cordova211 kB213 kB+2.67 kB (+1.3%)
    esm5237 kB245 kB+7.26 kB (+3.1%)
    main180 kB182 kB+2.68 kB (+1.5%)
    module183 kB188 kB+5.37 kB (+2.9%)
    react-native200 kB207 kB+7.34 kB (+3.7%)
  • @firebase/auth/cordova

    TypeBase (d8fcd95)Merge (ff9b0d7)Diff
    browser211 kB213 kB+2.67 kB (+1.3%)
    module211 kB213 kB+2.67 kB (+1.3%)
  • @firebase/auth/internal

    TypeBase (d8fcd95)Merge (ff9b0d7)Diff
    browser194 kB199 kB+5.37 kB (+2.8%)
    esm5251 kB258 kB+7.26 kB (+2.9%)
    main216 kB219 kB+2.69 kB (+1.2%)
    module194 kB199 kB+5.37 kB (+2.8%)
  • @firebase/auth/web-extension

    TypeBase (d8fcd95)Merge (ff9b0d7)Diff
    browser138 kB140 kB+1.88 kB (+1.4%)
    main153 kB157 kB+4.50 kB (+2.9%)
    module138 kB140 kB+1.88 kB (+1.4%)
  • bundle

    TypeBase (d8fcd95)Merge (ff9b0d7)Diff
    auth (EmailAndPassword)85.0 kB86.1 kB+1.15 kB (+1.4%)
    auth (Phone)86.6 kB93.2 kB+6.60 kB (+7.6%)
  • firebase

    TypeBase (d8fcd95)Merge (ff9b0d7)Diff
    firebase-auth-compat.js140 kB143 kB+2.82 kB (+2.0%)
    firebase-auth-cordova.js178 kB180 kB+1.87 kB (+1.1%)
    firebase-auth-web-extension.js117 kB119 kB+1.30 kB (+1.1%)
    firebase-auth.js152 kB155 kB+3.26 kB (+2.1%)
    firebase-compat.js786 kB789 kB+2.82 kB (+0.4%)

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/nKOUrfJPiq.html

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Nov 27, 2023

Size Analysis Report 1

Affected Products

  • @firebase/auth

    • EmailAuthCredential

      Size

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      size45.8 kB47.0 kB+1.15 kB (+2.5%)
      size-with-ext-deps67.3 kB68.5 kB+1.15 kB (+1.7%)

      Dependency

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      classes

      18 dependencies

      AuthCredential
      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      EmailAuthCredential
      FetchProvider
      InMemoryPersistence
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserImpl
      UserMetadata

      20 dependencies

      AuthCredential
      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      EmailAuthCredential
      FetchProvider
      InMemoryPersistence
      MockGreCAPTCHA
      MockGreCAPTCHATopLevel
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserImpl
      UserMetadata

      + MockGreCAPTCHA
      + MockGreCAPTCHATopLevel

    • EmailAuthProvider

      Size

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      size47.3 kB48.4 kB+1.15 kB (+2.4%)
      size-with-ext-deps69.0 kB70.1 kB+1.15 kB (+1.7%)

      Dependency

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      classes

      20 dependencies

      ActionCodeURL
      AuthCredential
      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      EmailAuthCredential
      EmailAuthProvider
      FetchProvider
      InMemoryPersistence
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserImpl
      UserMetadata

      22 dependencies

      ActionCodeURL
      AuthCredential
      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      EmailAuthCredential
      EmailAuthProvider
      FetchProvider
      InMemoryPersistence
      MockGreCAPTCHA
      MockGreCAPTCHATopLevel
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserImpl
      UserMetadata

      + MockGreCAPTCHA
      + MockGreCAPTCHATopLevel

    • PhoneAuthProvider

      Size

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      size43.0 kB50.4 kB+7.37 kB (+17.1%)
      size-with-ext-deps64.5 kB71.8 kB+7.37 kB (+11.4%)

      Dependency

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      functions

      61 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _prodErrorMap
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getVersionForPlatform
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      71 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _prodErrorMap
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      + _loadJS
      + _parseEnforcementState
      + _recaptchaEnterpriseScriptUrl
      + _setExternalJSProvider
      + getRecaptchaConfig
      + getScriptParentElement
      + handleRecaptchaFlow
      + injectRecaptchaFields
      + injectRecaptchaV2Token
      + isEnterprise

      classes

      17 dependencies

      AuthCredential
      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      FetchProvider
      InMemoryPersistence
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      PhoneAuthCredential
      PhoneAuthProvider
      ProactiveRefresh
      StsTokenManager
      Subscription
      UserImpl
      UserMetadata

      21 dependencies

      AuthCredential
      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      FetchProvider
      InMemoryPersistence
      MockGreCAPTCHA
      MockGreCAPTCHATopLevel
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      PhoneAuthCredential
      PhoneAuthProvider
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserImpl
      UserMetadata

      + MockGreCAPTCHA
      + MockGreCAPTCHATopLevel
      + RecaptchaConfig
      + RecaptchaEnterpriseVerifier

      variables

      13 dependencies

      DEFAULT_API_TIMEOUT_MS
      DEFAULT_ID_TOKEN_MAX_AGE
      MINIMUM_MIN_PASSWORD_LENGTH
      RECAPTCHA_VERIFIER_TYPE
      SERVER_ERROR_MAP
      VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_
      _DEFAULT_AUTH_ERROR_FACTORY
      inMemoryPersistence
      instanceCache
      logClient
      name
      prodErrorMap
      version

      16 dependencies

      DEFAULT_API_TIMEOUT_MS
      DEFAULT_ID_TOKEN_MAX_AGE
      FAKE_TOKEN
      MINIMUM_MIN_PASSWORD_LENGTH
      RECAPTCHA_ENTERPRISE_VERIFIER_TYPE
      RECAPTCHA_VERIFIER_TYPE
      SERVER_ERROR_MAP
      VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_
      _DEFAULT_AUTH_ERROR_FACTORY
      externalJSProvider
      inMemoryPersistence
      instanceCache
      logClient
      name
      prodErrorMap
      version

      + FAKE_TOKEN
      + RECAPTCHA_ENTERPRISE_VERIFIER_TYPE
      + externalJSProvider

    • createUserWithEmailAndPassword

      Size

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      size45.0 kB46.1 kB+1.12 kB (+2.5%)
      size-with-ext-deps66.5 kB67.6 kB+1.12 kB (+1.7%)

      Dependency

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      classes

      17 dependencies

      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      FetchProvider
      InMemoryPersistence
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserCredentialImpl
      UserImpl
      UserMetadata

      19 dependencies

      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      FetchProvider
      InMemoryPersistence
      MockGreCAPTCHA
      MockGreCAPTCHATopLevel
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserCredentialImpl
      UserImpl
      UserMetadata

      + MockGreCAPTCHA
      + MockGreCAPTCHATopLevel

    • initializeRecaptchaConfig

      Size

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      size42.6 kB42.9 kB+333 B (+0.8%)
      size-with-ext-deps64.0 kB64.4 kB+333 B (+0.5%)

      Dependency

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      classes

      16 dependencies

      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      FetchProvider
      InMemoryPersistence
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserImpl
      UserMetadata

      18 dependencies

      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      FetchProvider
      InMemoryPersistence
      MockGreCAPTCHA
      MockGreCAPTCHATopLevel
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserImpl
      UserMetadata

      + MockGreCAPTCHA
      + MockGreCAPTCHATopLevel

    • linkWithPhoneNumber

      Size

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      size43.7 kB51.1 kB+7.37 kB (+16.8%)
      size-with-ext-deps65.2 kB72.6 kB+7.37 kB (+11.3%)

      Dependency

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      functions

      67 dependencies

      _addTidIfNecessary
      _assert
      _assertLinkedStatus
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _link$1
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _prodErrorMap
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getVersionForPlatform
      isUserInvalidated
      linkWithCredential
      linkWithPhoneNumber
      linkWithPhoneNumber$1
      mergeProviderData
      providerDataAsNames
      providerIdForResponse
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      77 dependencies

      _addTidIfNecessary
      _assert
      _assertLinkedStatus
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _link$1
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _prodErrorMap
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithCredential
      linkWithPhoneNumber
      linkWithPhoneNumber$1
      mergeProviderData
      providerDataAsNames
      providerIdForResponse
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      + _loadJS
      + _parseEnforcementState
      + _recaptchaEnterpriseScriptUrl
      + _setExternalJSProvider
      + getRecaptchaConfig
      + getScriptParentElement
      + handleRecaptchaFlow
      + injectRecaptchaFields
      + injectRecaptchaV2Token
      + isEnterprise

      classes

      18 dependencies

      AuthCredential
      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      ConfirmationResultImpl
      Delay
      FetchProvider
      InMemoryPersistence
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      PhoneAuthCredential
      ProactiveRefresh
      StsTokenManager
      Subscription
      UserCredentialImpl
      UserImpl
      UserMetadata

      22 dependencies

      AuthCredential
      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      ConfirmationResultImpl
      Delay
      FetchProvider
      InMemoryPersistence
      MockGreCAPTCHA
      MockGreCAPTCHATopLevel
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      PhoneAuthCredential
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserCredentialImpl
      UserImpl
      UserMetadata

      + MockGreCAPTCHA
      + MockGreCAPTCHATopLevel
      + RecaptchaConfig
      + RecaptchaEnterpriseVerifier

      variables

      13 dependencies

      DEFAULT_API_TIMEOUT_MS
      DEFAULT_ID_TOKEN_MAX_AGE
      MINIMUM_MIN_PASSWORD_LENGTH
      RECAPTCHA_VERIFIER_TYPE
      SERVER_ERROR_MAP
      VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_
      _DEFAULT_AUTH_ERROR_FACTORY
      inMemoryPersistence
      instanceCache
      logClient
      name
      prodErrorMap
      version

      16 dependencies

      DEFAULT_API_TIMEOUT_MS
      DEFAULT_ID_TOKEN_MAX_AGE
      FAKE_TOKEN
      MINIMUM_MIN_PASSWORD_LENGTH
      RECAPTCHA_ENTERPRISE_VERIFIER_TYPE
      RECAPTCHA_VERIFIER_TYPE
      SERVER_ERROR_MAP
      VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_
      _DEFAULT_AUTH_ERROR_FACTORY
      externalJSProvider
      inMemoryPersistence
      instanceCache
      logClient
      name
      prodErrorMap
      version

      + FAKE_TOKEN
      + RECAPTCHA_ENTERPRISE_VERIFIER_TYPE
      + externalJSProvider

    • reauthenticateWithPhoneNumber

      Size

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      size44.4 kB51.7 kB+7.37 kB (+16.6%)
      size-with-ext-deps65.9 kB73.2 kB+7.37 kB (+11.2%)

      Dependency

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      functions

      66 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _processCredentialSavingMfaContextIfNecessary
      _prodErrorMap
      _reauthenticate
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getVersionForPlatform
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      providerIdForResponse
      reauthenticateWithCredential
      reauthenticateWithPhoneNumber
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      76 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _processCredentialSavingMfaContextIfNecessary
      _prodErrorMap
      _reauthenticate
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      providerIdForResponse
      reauthenticateWithCredential
      reauthenticateWithPhoneNumber
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      + _loadJS
      + _parseEnforcementState
      + _recaptchaEnterpriseScriptUrl
      + _setExternalJSProvider
      + getRecaptchaConfig
      + getScriptParentElement
      + handleRecaptchaFlow
      + injectRecaptchaFields
      + injectRecaptchaV2Token
      + isEnterprise

      classes

      19 dependencies

      AuthCredential
      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      ConfirmationResultImpl
      Delay
      FetchProvider
      InMemoryPersistence
      MultiFactorError
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      PhoneAuthCredential
      ProactiveRefresh
      StsTokenManager
      Subscription
      UserCredentialImpl
      UserImpl
      UserMetadata

      23 dependencies

      AuthCredential
      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      ConfirmationResultImpl
      Delay
      FetchProvider
      InMemoryPersistence
      MockGreCAPTCHA
      MockGreCAPTCHATopLevel
      MultiFactorError
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      PhoneAuthCredential
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserCredentialImpl
      UserImpl
      UserMetadata

      + MockGreCAPTCHA
      + MockGreCAPTCHATopLevel
      + RecaptchaConfig
      + RecaptchaEnterpriseVerifier

      variables

      13 dependencies

      DEFAULT_API_TIMEOUT_MS
      DEFAULT_ID_TOKEN_MAX_AGE
      MINIMUM_MIN_PASSWORD_LENGTH
      RECAPTCHA_VERIFIER_TYPE
      SERVER_ERROR_MAP
      VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_
      _DEFAULT_AUTH_ERROR_FACTORY
      inMemoryPersistence
      instanceCache
      logClient
      name
      prodErrorMap
      version

      16 dependencies

      DEFAULT_API_TIMEOUT_MS
      DEFAULT_ID_TOKEN_MAX_AGE
      FAKE_TOKEN
      MINIMUM_MIN_PASSWORD_LENGTH
      RECAPTCHA_ENTERPRISE_VERIFIER_TYPE
      RECAPTCHA_VERIFIER_TYPE
      SERVER_ERROR_MAP
      VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_
      _DEFAULT_AUTH_ERROR_FACTORY
      externalJSProvider
      inMemoryPersistence
      instanceCache
      logClient
      name
      prodErrorMap
      version

      + FAKE_TOKEN
      + RECAPTCHA_ENTERPRISE_VERIFIER_TYPE
      + externalJSProvider

    • sendPasswordResetEmail

      Size

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      size44.6 kB45.7 kB+1.12 kB (+2.5%)
      size-with-ext-deps66.0 kB67.2 kB+1.12 kB (+1.7%)

      Dependency

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      classes

      16 dependencies

      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      FetchProvider
      InMemoryPersistence
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserImpl
      UserMetadata

      18 dependencies

      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      FetchProvider
      InMemoryPersistence
      MockGreCAPTCHA
      MockGreCAPTCHATopLevel
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserImpl
      UserMetadata

      + MockGreCAPTCHA
      + MockGreCAPTCHATopLevel

    • sendSignInLinkToEmail

      Size

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      size44.6 kB45.8 kB+1.12 kB (+2.5%)
      size-with-ext-deps66.1 kB67.2 kB+1.12 kB (+1.7%)

      Dependency

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      classes

      16 dependencies

      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      FetchProvider
      InMemoryPersistence
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserImpl
      UserMetadata

      18 dependencies

      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      FetchProvider
      InMemoryPersistence
      MockGreCAPTCHA
      MockGreCAPTCHATopLevel
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserImpl
      UserMetadata

      + MockGreCAPTCHA
      + MockGreCAPTCHATopLevel

    • signInWithEmailAndPassword

      Size

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      size49.0 kB50.2 kB+1.15 kB (+2.3%)
      size-with-ext-deps70.7 kB71.9 kB+1.15 kB (+1.6%)

      Dependency

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      classes

      22 dependencies

      ActionCodeURL
      AuthCredential
      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      EmailAuthCredential
      EmailAuthProvider
      FetchProvider
      InMemoryPersistence
      MultiFactorError
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserCredentialImpl
      UserImpl
      UserMetadata

      24 dependencies

      ActionCodeURL
      AuthCredential
      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      EmailAuthCredential
      EmailAuthProvider
      FetchProvider
      InMemoryPersistence
      MockGreCAPTCHA
      MockGreCAPTCHATopLevel
      MultiFactorError
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserCredentialImpl
      UserImpl
      UserMetadata

      + MockGreCAPTCHA
      + MockGreCAPTCHATopLevel

    • signInWithEmailLink

      Size

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      size49.0 kB50.2 kB+1.15 kB (+2.3%)
      size-with-ext-deps70.7 kB71.9 kB+1.15 kB (+1.6%)

      Dependency

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      classes

      22 dependencies

      ActionCodeURL
      AuthCredential
      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      EmailAuthCredential
      EmailAuthProvider
      FetchProvider
      InMemoryPersistence
      MultiFactorError
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserCredentialImpl
      UserImpl
      UserMetadata

      24 dependencies

      ActionCodeURL
      AuthCredential
      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      Delay
      EmailAuthCredential
      EmailAuthProvider
      FetchProvider
      InMemoryPersistence
      MockGreCAPTCHA
      MockGreCAPTCHATopLevel
      MultiFactorError
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserCredentialImpl
      UserImpl
      UserMetadata

      + MockGreCAPTCHA
      + MockGreCAPTCHATopLevel

    • signInWithPhoneNumber

      Size

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      size44.2 kB51.5 kB+7.37 kB (+16.7%)
      size-with-ext-deps65.6 kB73.0 kB+7.37 kB (+11.2%)

      Dependency

      TypeBase (d8fcd95)Merge (ff9b0d7)Diff
      functions

      66 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _processCredentialSavingMfaContextIfNecessary
      _prodErrorMap
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _signInWithCredential
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getVersionForPlatform
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      providerIdForResponse
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithCredential
      signInWithPhoneNumber
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      76 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _processCredentialSavingMfaContextIfNecessary
      _prodErrorMap
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _signInWithCredential
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      providerIdForResponse
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithCredential
      signInWithPhoneNumber
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      + _loadJS
      + _parseEnforcementState
      + _recaptchaEnterpriseScriptUrl
      + _setExternalJSProvider
      + getRecaptchaConfig
      + getScriptParentElement
      + handleRecaptchaFlow
      + injectRecaptchaFields
      + injectRecaptchaV2Token
      + isEnterprise

      classes

      19 dependencies

      AuthCredential
      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      ConfirmationResultImpl
      Delay
      FetchProvider
      InMemoryPersistence
      MultiFactorError
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      PhoneAuthCredential
      ProactiveRefresh
      StsTokenManager
      Subscription
      UserCredentialImpl
      UserImpl
      UserMetadata

      23 dependencies

      AuthCredential
      AuthImpl
      AuthInterop
      AuthMiddlewareQueue
      ConfirmationResultImpl
      Delay
      FetchProvider
      InMemoryPersistence
      MockGreCAPTCHA
      MockGreCAPTCHATopLevel
      MultiFactorError
      NetworkTimeout
      PasswordPolicyImpl
      PersistenceUserManager
      PhoneAuthCredential
      ProactiveRefresh
      RecaptchaConfig
      RecaptchaEnterpriseVerifier
      StsTokenManager
      Subscription
      UserCredentialImpl
      UserImpl
      UserMetadata

      + MockGreCAPTCHA
      + MockGreCAPTCHATopLevel
      + RecaptchaConfig
      + RecaptchaEnterpriseVerifier

      variables

      13 dependencies

      DEFAULT_API_TIMEOUT_MS
      DEFAULT_ID_TOKEN_MAX_AGE
      MINIMUM_MIN_PASSWORD_LENGTH
      RECAPTCHA_VERIFIER_TYPE
      SERVER_ERROR_MAP
      VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_
      _DEFAULT_AUTH_ERROR_FACTORY
      inMemoryPersistence
      instanceCache
      logClient
      name
      prodErrorMap
      version

      16 dependencies

      DEFAULT_API_TIMEOUT_MS
      DEFAULT_ID_TOKEN_MAX_AGE
      FAKE_TOKEN
      MINIMUM_MIN_PASSWORD_LENGTH
      RECAPTCHA_ENTERPRISE_VERIFIER_TYPE
      RECAPTCHA_VERIFIER_TYPE
      SERVER_ERROR_MAP
      VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_
      _DEFAULT_AUTH_ERROR_FACTORY
      externalJSProvider
      inMemoryPersistence
      instanceCache
      logClient
      name
      prodErrorMap
      version

      + FAKE_TOKEN
      + RECAPTCHA_ENTERPRISE_VERIFIER_TYPE
      + externalJSProvider

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/A1qpJIlf3O.html

@NhienLam NhienLam marked this pull request as ready for review December 4, 2023 19:07
@NhienLam NhienLam requested review from Xiaoshouzi-gh and removed request for egilmorez, markarndt and kevinthecheung December 4, 2023 19:08
@NhienLam NhienLam removed the request for review from prameshj March 28, 2024 00:43
NhienLam and others added 3 commits March 28, 2024 09:23
…to phone API requests (#7786)

* Update injectRecaptchaFields to inject recaptcha fields into phone API requests

* Fix lint

* Rename captchaResp and fakeToken params

* Format
@NhienLam NhienLam force-pushed the nhienlam-rce-phone branch from 8e29413 to 124fbb3 Compare March 28, 2024 17:06

describe('platform_browser/providers/phone', () => {
let auth: TestAuth;

beforeEach(async () => {
fetch.setUp();
auth = await testAuth();
auth.settings.appVerificationDisabledForTesting = false;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will the tests fail if it's set to true?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, tests with Recaptcha Enterprise enabled will fail if appVerificationDisabledForTesting is set to true.

(I mistakenly removed the test in the previous commit, just added it back)

@NhienLam NhienLam merged commit 9790bb2 into rce-phone Apr 10, 2024
@NhienLam NhienLam deleted the nhienlam-rce-phone branch April 10, 2024 16:15
@firebase firebase locked and limited conversation to collaborators May 11, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants