fix(): captcha refresh after signup (#12598)
This commit is contained in:
@ -76,6 +76,7 @@ import {
|
|||||||
countAvailableWorkspaces,
|
countAvailableWorkspaces,
|
||||||
getFirstAvailableWorkspaces,
|
getFirstAvailableWorkspaces,
|
||||||
} from '@/auth/utils/availableWorkspacesUtils';
|
} from '@/auth/utils/availableWorkspacesUtils';
|
||||||
|
import { useRequestFreshCaptchaToken } from '@/captcha/hooks/useRequestFreshCaptchaToken';
|
||||||
|
|
||||||
export const useAuth = () => {
|
export const useAuth = () => {
|
||||||
const setTokenPair = useSetRecoilState(tokenPairState);
|
const setTokenPair = useSetRecoilState(tokenPairState);
|
||||||
@ -86,7 +87,7 @@ export const useAuth = () => {
|
|||||||
);
|
);
|
||||||
const setCurrentUserWorkspace = useSetRecoilState(currentUserWorkspaceState);
|
const setCurrentUserWorkspace = useSetRecoilState(currentUserWorkspaceState);
|
||||||
const { origin } = useOrigin();
|
const { origin } = useOrigin();
|
||||||
|
const { requestFreshCaptchaToken } = useRequestFreshCaptchaToken();
|
||||||
const setCurrentWorkspaceMembers = useSetRecoilState(
|
const setCurrentWorkspaceMembers = useSetRecoilState(
|
||||||
currentWorkspaceMembersState,
|
currentWorkspaceMembersState,
|
||||||
);
|
);
|
||||||
@ -518,55 +519,60 @@ export const useAuth = () => {
|
|||||||
captchaToken?: string;
|
captchaToken?: string;
|
||||||
verifyEmailNextPath?: string;
|
verifyEmailNextPath?: string;
|
||||||
}) => {
|
}) => {
|
||||||
const signUpInWorkspaceResult = await signUpInWorkspace({
|
try {
|
||||||
variables: {
|
const signUpInWorkspaceResult = await signUpInWorkspace({
|
||||||
email,
|
variables: {
|
||||||
password,
|
|
||||||
workspaceInviteHash,
|
|
||||||
workspacePersonalInviteToken,
|
|
||||||
captchaToken,
|
|
||||||
locale: i18n.locale ?? 'en',
|
|
||||||
...(workspacePublicData?.id
|
|
||||||
? { workspaceId: workspacePublicData.id }
|
|
||||||
: {}),
|
|
||||||
verifyEmailNextPath,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
if (isDefined(signUpInWorkspaceResult.errors)) {
|
|
||||||
throw signUpInWorkspaceResult.errors;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!signUpInWorkspaceResult.data?.signUpInWorkspace) {
|
|
||||||
throw new Error('No login token');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isEmailVerificationRequired) {
|
|
||||||
setSearchParams({ email });
|
|
||||||
setSignInUpStep(SignInUpStep.EmailVerification);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isMultiWorkspaceEnabled) {
|
|
||||||
return await redirectToWorkspaceDomain(
|
|
||||||
getWorkspaceUrl(
|
|
||||||
signUpInWorkspaceResult.data.signUpInWorkspace.workspace
|
|
||||||
.workspaceUrls,
|
|
||||||
),
|
|
||||||
isEmailVerificationRequired ? AppPath.SignInUp : AppPath.Verify,
|
|
||||||
{
|
|
||||||
...(!isEmailVerificationRequired && {
|
|
||||||
loginToken:
|
|
||||||
signUpInWorkspaceResult.data.signUpInWorkspace.loginToken.token,
|
|
||||||
}),
|
|
||||||
email,
|
email,
|
||||||
|
password,
|
||||||
|
workspaceInviteHash,
|
||||||
|
workspacePersonalInviteToken,
|
||||||
|
captchaToken,
|
||||||
|
locale: i18n.locale ?? 'en',
|
||||||
|
...(workspacePublicData?.id
|
||||||
|
? { workspaceId: workspacePublicData.id }
|
||||||
|
: {}),
|
||||||
|
verifyEmailNextPath,
|
||||||
},
|
},
|
||||||
);
|
});
|
||||||
}
|
|
||||||
|
|
||||||
await handleGetAuthTokensFromLoginToken(
|
if (isDefined(signUpInWorkspaceResult.errors)) {
|
||||||
signUpInWorkspaceResult.data?.signUpInWorkspace.loginToken.token,
|
throw signUpInWorkspaceResult.errors;
|
||||||
);
|
}
|
||||||
|
|
||||||
|
if (!signUpInWorkspaceResult.data?.signUpInWorkspace) {
|
||||||
|
throw new Error('No login token');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isEmailVerificationRequired) {
|
||||||
|
setSearchParams({ email });
|
||||||
|
setSignInUpStep(SignInUpStep.EmailVerification);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isMultiWorkspaceEnabled) {
|
||||||
|
return await redirectToWorkspaceDomain(
|
||||||
|
getWorkspaceUrl(
|
||||||
|
signUpInWorkspaceResult.data.signUpInWorkspace.workspace
|
||||||
|
.workspaceUrls,
|
||||||
|
),
|
||||||
|
isEmailVerificationRequired ? AppPath.SignInUp : AppPath.Verify,
|
||||||
|
{
|
||||||
|
...(!isEmailVerificationRequired && {
|
||||||
|
loginToken:
|
||||||
|
signUpInWorkspaceResult.data.signUpInWorkspace.loginToken
|
||||||
|
.token,
|
||||||
|
}),
|
||||||
|
email,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
await handleGetAuthTokensFromLoginToken(
|
||||||
|
signUpInWorkspaceResult.data?.signUpInWorkspace.loginToken.token,
|
||||||
|
);
|
||||||
|
} finally {
|
||||||
|
requestFreshCaptchaToken();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
signUpInWorkspace,
|
signUpInWorkspace,
|
||||||
@ -577,6 +583,7 @@ export const useAuth = () => {
|
|||||||
setSearchParams,
|
setSearchParams,
|
||||||
isEmailVerificationRequired,
|
isEmailVerificationRequired,
|
||||||
redirectToWorkspaceDomain,
|
redirectToWorkspaceDomain,
|
||||||
|
requestFreshCaptchaToken,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user