fix(): remove originHeader decorator (#12245)

Fix
https://github.com/twentyhq/core-team-issues/issues/858#issuecomment-2891213392
Fix #11966 
Fix #12175
This commit is contained in:
Antoine Moreaux
2025-05-23 18:01:36 +02:00
committed by GitHub
parent 54edcc0ea7
commit 8de85eea61
20 changed files with 98 additions and 62 deletions

View File

@ -1,8 +1,8 @@
import { gql } from '@apollo/client';
export const GET_AUTH_TOKENS_FROM_LOGIN_TOKEN = gql`
mutation GetAuthTokensFromLoginToken($loginToken: String!) {
getAuthTokensFromLoginToken(loginToken: $loginToken) {
mutation GetAuthTokensFromLoginToken($loginToken: String!, $origin: String!) {
getAuthTokensFromLoginToken(loginToken: $loginToken, origin: $origin) {
tokens {
...AuthTokensFragment
}

View File

@ -5,11 +5,13 @@ export const GET_LOGIN_TOKEN_FROM_CREDENTIALS = gql`
$email: String!
$password: String!
$captchaToken: String
$origin: String!
) {
getLoginTokenFromCredentials(
email: $email
password: $password
captchaToken: $captchaToken
origin: $origin
) {
loginToken {
...AuthTokenFragment

View File

@ -4,10 +4,12 @@ export const GET_LOGIN_TOKEN_FROM_EMAIL_VERIFICATION_TOKEN = gql`
mutation GetLoginTokenFromEmailVerificationToken(
$emailVerificationToken: String!
$captchaToken: String
$origin: String!
) {
getLoginTokenFromEmailVerificationToken(
emailVerificationToken: $emailVerificationToken
captchaToken: $captchaToken
origin: $origin
) {
loginToken {
...AuthTokenFragment

View File

@ -1,8 +1,8 @@
import { gql } from '@apollo/client';
export const RESEND_EMAIL_VERIFICATION_TOKEN = gql`
mutation ResendEmailVerificationToken($email: String!) {
resendEmailVerificationToken(email: $email) {
mutation ResendEmailVerificationToken($email: String!, $origin: String!) {
resendEmailVerificationToken(email: $email, origin: $origin) {
success
}
}

View File

@ -1,8 +1,8 @@
import { gql } from '@apollo/client';
export const GET_PUBLIC_WORKSPACE_DATA_BY_DOMAIN = gql`
query GetPublicWorkspaceDataByDomain {
getPublicWorkspaceDataByDomain {
query GetPublicWorkspaceDataByDomain($origin: String!) {
getPublicWorkspaceDataByDomain(origin: $origin) {
id
logo
displayName

View File

@ -14,6 +14,7 @@ export const queries = {
export const email = 'test@test.com';
export const password = 'testing';
export const origin = 'http://localhost';
export const token =
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
@ -21,8 +22,9 @@ export const variables = {
getLoginTokenFromCredentials: {
email,
password,
origin,
},
getAuthTokensFromLoginToken: { loginToken: token },
getAuthTokensFromLoginToken: { loginToken: token, origin },
signup: {
email,
password,

View File

@ -53,6 +53,7 @@ import { isEmailVerificationRequiredState } from '@/client-config/states/isEmail
import { isMultiWorkspaceEnabledState } from '@/client-config/states/isMultiWorkspaceEnabledState';
import { useIsCurrentLocationOnAWorkspace } from '@/domain-manager/hooks/useIsCurrentLocationOnAWorkspace';
import { useLastAuthenticatedWorkspaceDomain } from '@/domain-manager/hooks/useLastAuthenticatedWorkspaceDomain';
import { useOrigin } from '@/domain-manager/hooks/useOrigin';
import { useRedirect } from '@/domain-manager/hooks/useRedirect';
import { useRedirectToWorkspaceDomain } from '@/domain-manager/hooks/useRedirectToWorkspaceDomain';
import { domainConfigurationState } from '@/domain-manager/states/domainConfigurationState';
@ -74,6 +75,7 @@ export const useAuth = () => {
currentWorkspaceMemberState,
);
const setCurrentUserWorkspace = useSetRecoilState(currentUserWorkspaceState);
const { origin } = useOrigin();
const setCurrentWorkspaceMembers = useSetRecoilState(
currentWorkspaceMembersState,
@ -179,6 +181,7 @@ export const useAuth = () => {
email,
password,
captchaToken,
origin,
},
});
if (isDefined(getLoginTokenResult.errors)) {
@ -203,7 +206,7 @@ export const useAuth = () => {
throw error;
}
},
[getLoginTokenFromCredentials, setSearchParams, setSignInUpStep],
[getLoginTokenFromCredentials, setSearchParams, setSignInUpStep, origin],
);
const handleGetLoginTokenFromEmailVerificationToken = useCallback(
@ -212,6 +215,7 @@ export const useAuth = () => {
variables: {
emailVerificationToken,
captchaToken,
origin,
},
});
@ -225,7 +229,7 @@ export const useAuth = () => {
return loginTokenResult.data.getLoginTokenFromEmailVerificationToken;
},
[getLoginTokenFromEmailVerificationToken],
[getLoginTokenFromEmailVerificationToken, origin],
);
const loadCurrentUser = useCallback(async () => {
@ -335,7 +339,10 @@ export const useAuth = () => {
const handleGetAuthTokensFromLoginToken = useCallback(
async (loginToken: string) => {
const getAuthTokensResult = await getAuthTokensFromLoginToken({
variables: { loginToken },
variables: {
loginToken,
origin,
},
});
if (isDefined(getAuthTokensResult.errors)) {
@ -364,6 +371,7 @@ export const useAuth = () => {
setTokenPair,
refreshObjectMetadataItems,
loadCurrentUser,
origin,
],
);

View File

@ -1,5 +1,6 @@
import { useCallback } from 'react';
import { useOrigin } from '@/domain-manager/hooks/useOrigin';
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
import { t } from '@lingui/core/macro';
@ -9,6 +10,7 @@ export const useHandleResendEmailVerificationToken = () => {
const { enqueueSnackBar } = useSnackBar();
const [resendEmailVerificationToken, { loading }] =
useResendEmailVerificationTokenMutation();
const { origin } = useOrigin();
const handleResendEmailVerificationToken = useCallback(
(email: string | null) => {
@ -22,7 +24,10 @@ export const useHandleResendEmailVerificationToken = () => {
try {
const { data } = await resendEmailVerificationToken({
variables: { email },
variables: {
email,
origin,
},
});
if (data?.resendEmailVerificationToken?.success === true) {
@ -41,7 +46,7 @@ export const useHandleResendEmailVerificationToken = () => {
}
};
},
[enqueueSnackBar, resendEmailVerificationToken],
[enqueueSnackBar, resendEmailVerificationToken, origin],
);
return { handleResendEmailVerificationToken, loading };

View File

@ -1,6 +1,7 @@
import { workspacePublicDataState } from '@/auth/states/workspacePublicDataState';
import { isMultiWorkspaceEnabledState } from '@/client-config/states/isMultiWorkspaceEnabledState';
import { useIsCurrentLocationOnDefaultDomain } from '@/domain-manager/hooks/useIsCurrentLocationOnDefaultDomain';
import { useOrigin } from '@/domain-manager/hooks/useOrigin';
import { useRedirectToDefaultDomain } from '@/domain-manager/hooks/useRedirectToDefaultDomain';
import { workspaceAuthProvidersState } from '@/workspace/states/workspaceAuthProvidersState';
import { useRecoilValue, useSetRecoilState } from 'recoil';
@ -10,6 +11,7 @@ import { isDefined } from 'twenty-shared/utils';
export const useGetPublicWorkspaceDataByDomain = () => {
const { isDefaultDomain } = useIsCurrentLocationOnDefaultDomain();
const isMultiWorkspaceEnabled = useRecoilValue(isMultiWorkspaceEnabledState);
const { origin } = useOrigin();
const setWorkspaceAuthProviders = useSetRecoilState(
workspaceAuthProvidersState,
);
@ -20,6 +22,9 @@ export const useGetPublicWorkspaceDataByDomain = () => {
);
const { loading, data, error } = useGetPublicWorkspaceDataByDomainQuery({
variables: {
origin,
},
skip:
(isMultiWorkspaceEnabled && isDefaultDomain) ||
isDefined(workspacePublicData),

View File

@ -0,0 +1,7 @@
import { useMemo } from 'react';
export const useOrigin = () => {
const origin = useMemo(() => window.location.origin, []);
return { origin };
};