diff --git a/packages/experience/src/hooks/use-mfa-error-handler.ts b/packages/experience/src/hooks/use-mfa-error-handler.ts index 3910481870c1..bb66129813ee 100644 --- a/packages/experience/src/hooks/use-mfa-error-handler.ts +++ b/packages/experience/src/hooks/use-mfa-error-handler.ts @@ -27,7 +27,7 @@ const useMfaErrorHandler = ({ replace }: Options = {}) => { const startTotpBinding = useStartTotpBinding(); const startWebAuthnProcessing = useStartWebAuthnProcessing(); const startBackupCodeBinding = useStartBackupCodeBinding(); - const { onSubmit: startMfaVerificationCodeProcessing } = useSendMfaVerificationCode(); + const { onSubmit: startMfaVerificationCodeProcessing } = useSendMfaVerificationCode({ replace }); /** * Redirect the user to the corresponding MFA page. diff --git a/packages/experience/src/hooks/use-send-mfa-verification-code.ts b/packages/experience/src/hooks/use-send-mfa-verification-code.ts index be2a0950d821..5a26a8b88ac9 100644 --- a/packages/experience/src/hooks/use-send-mfa-verification-code.ts +++ b/packages/experience/src/hooks/use-send-mfa-verification-code.ts @@ -10,7 +10,12 @@ import { type VerificationCodeIdentifier } from '@/types'; import { type MfaFlowState } from '@/types/guard'; import { codeVerificationTypeMap } from '@/utils/sign-in-experience'; -const useSendMfaVerificationCode = () => { +type Options = { + /** Whether to replace the current page in the history stack on navigation. */ + replace?: boolean; +}; + +const useSendMfaVerificationCode = ({ replace }: Options = {}) => { const [errorMessage, setErrorMessage] = useState(); const navigate = useNavigateWithPreservedSearchParams(); @@ -38,11 +43,11 @@ const useSendMfaVerificationCode = () => { navigate( `/mfa-verification/${identifier === 'email' ? MfaFactor.EmailVerificationCode : MfaFactor.PhoneVerificationCode}`, - { state: flowState } + { replace, state: flowState } ); } }, - [asyncSendVerificationCode, handleError, navigate, setVerificationId] + [asyncSendVerificationCode, handleError, navigate, replace, setVerificationId] ); return { diff --git a/packages/experience/src/pages/OneTimeToken/index.tsx b/packages/experience/src/pages/OneTimeToken/index.tsx index a9474f73b17f..5fa2fe20dbc3 100644 --- a/packages/experience/src/pages/OneTimeToken/index.tsx +++ b/packages/experience/src/pages/OneTimeToken/index.tsx @@ -38,8 +38,12 @@ const OneTimeToken = () => { const { termsValidation, agreeToTermsPolicy } = useTerms(); const handleError = useErrorHandler(); const redirectTo = useGlobalRedirectTo(); - const preSignInErrorHandler = useSubmitInteractionErrorHandler(InteractionEvent.SignIn); - const preRegisterErrorHandler = useSubmitInteractionErrorHandler(InteractionEvent.Register); + const preSignInErrorHandler = useSubmitInteractionErrorHandler(InteractionEvent.SignIn, { + replace: true, + }); + const preRegisterErrorHandler = useSubmitInteractionErrorHandler(InteractionEvent.Register, { + replace: true, + }); /** * Update interaction event to `Register`, and then identify user and submit.