{"version":3,"file":"usePasswordInput.mjs","sources":["../../../../../../../../web/src/ui/b2b/usePasswordInput.ts"],"sourcesContent":["import { useLingui } from '@lingui/react/macro';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { OrganizationBySlugMatch, StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport { useState } from 'react';\n\nimport { B2BSubscriptionDataLayer } from '../../SubscriptionService';\nimport { getTranslatedError } from '../../utils/getTranslatedError';\nimport { readB2BInternals } from '../../utils/internal';\nimport { useConfig, useErrorCallback, useEventCallback, useGlobalReducer, useStytch } from './GlobalContextProvider';\nimport { AppScreens } from './types/AppScreens';\nimport { onAuthenticateSuccess } from './utils';\n\nexport const usePasswordInput = () => {\n  const [state, dispatch] = useGlobalReducer();\n  const config = useConfig();\n  const stytch = useStytch();\n  const { t } = useLingui();\n\n  const onEvent = useEventCallback();\n  const onError = useErrorCallback();\n\n  const [email, setEmail] = useState(state.formState.passwordState.email);\n  const [password, setPassword] = useState('');\n  const [errorMessage, setErrorMessage] = useState('');\n  const [isSubmitting, setIsSubmitting] = useState(false);\n  const organization = state.flowState.organization;\n\n  const submitPassword = (organization_id: string) => {\n    setErrorMessage('');\n    setIsSubmitting(true);\n    stytch.passwords\n      .authenticate({\n        email_address: email,\n        organization_id: organization_id,\n        password: password,\n        session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n        locale: config.passwordOptions?.locale,\n      })\n      .then((data) => {\n        setIsSubmitting(false);\n        onEvent({ type: StytchEventType.B2BPasswordAuthenticate, data });\n        onAuthenticateSuccess(data, dispatch, config);\n      })\n      .catch((err: StytchAPIError) => {\n        setIsSubmitting(false);\n        onError(err);\n        setErrorMessage(getTranslatedError(err, t));\n      });\n  };\n\n  const submitDiscoveryPassword = () => {\n    setErrorMessage('');\n    setIsSubmitting(true);\n    stytch.passwords.discovery\n      .authenticate({\n        email_address: email,\n        password: password,\n      })\n      .then((data) => {\n        setIsSubmitting(false);\n        onEvent({ type: StytchEventType.B2BPasswordDiscoveryAuthenticate, data });\n        dispatch({\n          type: 'set_discovery_state',\n          email: data.email_address,\n          discoveredOrganizations: data.discovered_organizations,\n        });\n        dispatch({ type: 'transition', screen: AppScreens.Discovery });\n      })\n      .catch((err: StytchAPIError) => {\n        setIsSubmitting(false);\n        onError(err);\n        setErrorMessage(getTranslatedError(err, t));\n      });\n  };\n\n  const emailEligibleForJITProvisioning = (\n    { email_jit_provisioning, email_allowed_domains }: OrganizationBySlugMatch,\n    email: string,\n  ) => {\n    switch (email_jit_provisioning) {\n      case 'ALL_ALLOWED':\n        return true;\n      case 'NOT_ALLOWED':\n        return false;\n      case 'RESTRICTED': {\n        const emailDomain = email.split('@').pop();\n        return emailDomain != null && email_allowed_domains.includes(emailDomain);\n      }\n    }\n  };\n\n  const handleNonMemberReset = () => {\n    if (!organization) {\n      return;\n    }\n\n    if (!emailEligibleForJITProvisioning(organization, email)) {\n      setIsSubmitting(false);\n      const organizationName = organization.organization_name;\n      setErrorMessage(\n        t({\n          id: 'error.emailNoAccessToOrg',\n          message: `${email} does not have access to ${organizationName}. If you think this is a mistake, contact your admin.`,\n        }),\n      );\n      return;\n    }\n\n    const dataLayer = readB2BInternals(stytch).dataLayer as B2BSubscriptionDataLayer;\n    dataLayer.setItem('reset-email-value', email);\n    stytch.magicLinks.email\n      .loginOrSignup({\n        email_address: email,\n        organization_id: organization.organization_id,\n        login_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n        signup_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n        login_template_id: config.emailMagicLinksOptions?.loginTemplateId,\n        signup_template_id: config.emailMagicLinksOptions?.signupTemplateId,\n        locale: config.emailMagicLinksOptions?.locale,\n      })\n      .then(() => {\n        setIsSubmitting(false);\n        dispatch({ type: 'set_password_state', email: email });\n        dispatch({ type: 'transition', screen: AppScreens.PasswordResetVerifyConfirmation });\n      })\n      .catch((err: StytchAPIError) => {\n        onError(err);\n        setErrorMessage(getTranslatedError(err, t));\n        setIsSubmitting(false);\n      });\n  };\n\n  return {\n    stytch,\n    onError,\n    email,\n    setEmail,\n    password,\n    setPassword,\n    organization,\n    errorMessage,\n    setErrorMessage,\n    isSubmitting,\n    setIsSubmitting,\n    submitPassword,\n    submitDiscoveryPassword,\n    handleNonMemberReset,\n  };\n};\n"],"names":["usePasswordInput","state","dispatch","useGlobalReducer","config","useConfig","stytch","useStytch","useLingui","onEvent","useEventCallback","onError","useErrorCallback","email","setEmail","useState","formState","passwordState","password","setPassword","errorMessage","setErrorMessage","isSubmitting","setIsSubmitting","organization","flowState","submitPassword","organization_id","passwords","authenticate","email_address","session_duration_minutes","sessionOptions","sessionDurationMinutes","DEFAULT_SESSION_DURATION_MINUTES","locale","passwordOptions","then","data","type","StytchEventType","B2BPasswordAuthenticate","onAuthenticateSuccess","catch","err","getTranslatedError","submitDiscoveryPassword","discovery","B2BPasswordDiscoveryAuthenticate","discoveredOrganizations","discovered_organizations","screen","AppScreens","Discovery","emailEligibleForJITProvisioning","email_jit_provisioning","email_allowed_domains","emailDomain","split","pop","includes","handleNonMemberReset","organizationName","organization_name","dataLayer","readB2BInternals","setItem","magicLinks","loginOrSignup","login_redirect_url","resetPasswordRedirectURL","signup_redirect_url","login_template_id","emailMagicLinksOptions","loginTemplateId","signup_template_id","signupTemplateId","PasswordResetVerifyConfirmation"],"mappings":"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"}