fix(email-validation): validation email cross workspace (#11261)
- Finish removing captcha guard from validation email - Fix an issue where domain validation wasn't working on a multi-domain setup
This commit is contained in:
@ -3,12 +3,14 @@ import { AppPath } from '@/types/AppPath';
|
||||
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
|
||||
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
||||
|
||||
import { useReadCaptchaToken } from '@/captcha/hooks/useReadCaptchaToken';
|
||||
import { useLingui } from '@lingui/react/macro';
|
||||
import { useEffect, useState } from 'react';
|
||||
import { useSearchParams } from 'react-router-dom';
|
||||
import { useNavigateApp } from '~/hooks/useNavigateApp';
|
||||
import { EmailVerificationSent } from '../sign-in-up/components/EmailVerificationSent';
|
||||
import { useRedirectToWorkspaceDomain } from '@/domain-manager/hooks/useRedirectToWorkspaceDomain';
|
||||
import { useVerifyLogin } from '@/auth/hooks/useVerifyLogin';
|
||||
import { getWorkspaceUrl } from '~/utils/getWorkspaceUrl';
|
||||
|
||||
export const VerifyEmailEffect = () => {
|
||||
const { getLoginTokenFromEmailVerificationToken } = useAuth();
|
||||
@ -21,7 +23,9 @@ export const VerifyEmailEffect = () => {
|
||||
const emailVerificationToken = searchParams.get('emailVerificationToken');
|
||||
|
||||
const navigate = useNavigateApp();
|
||||
const { readCaptchaToken } = useReadCaptchaToken();
|
||||
const { redirectToWorkspaceDomain } = useRedirectToWorkspaceDomain();
|
||||
const { verifyLoginToken } = useVerifyLogin();
|
||||
|
||||
const { t } = useLingui();
|
||||
useEffect(() => {
|
||||
const verifyEmailToken = async () => {
|
||||
@ -33,23 +37,25 @@ export const VerifyEmailEffect = () => {
|
||||
return navigate(AppPath.SignInUp);
|
||||
}
|
||||
|
||||
const captchaToken = await readCaptchaToken();
|
||||
|
||||
try {
|
||||
const { loginToken } = await getLoginTokenFromEmailVerificationToken(
|
||||
emailVerificationToken,
|
||||
captchaToken,
|
||||
);
|
||||
const { loginToken, workspaceUrls } =
|
||||
await getLoginTokenFromEmailVerificationToken(emailVerificationToken);
|
||||
|
||||
enqueueSnackBar(t`Email verified.`, {
|
||||
dedupeKey: 'email-verification-dedupe-key',
|
||||
variant: SnackBarVariant.Success,
|
||||
});
|
||||
|
||||
navigate(AppPath.Verify, undefined, { loginToken: loginToken.token });
|
||||
const workspaceUrl = getWorkspaceUrl(workspaceUrls);
|
||||
if (workspaceUrl.slice(0, -1) !== window.location.origin) {
|
||||
return redirectToWorkspaceDomain(workspaceUrl, AppPath.Verify, {
|
||||
loginToken: loginToken.token,
|
||||
});
|
||||
}
|
||||
verifyLoginToken(loginToken.token);
|
||||
} catch (error) {
|
||||
enqueueSnackBar(t`Email verification failed.`, {
|
||||
dedupeKey: 'email-verification-dedupe-key',
|
||||
dedupeKey: 'email-verification-error-dedupe-key',
|
||||
variant: SnackBarVariant.Error,
|
||||
});
|
||||
setIsError(true);
|
||||
|
||||
Reference in New Issue
Block a user