fix(auth): Invite with public url and social sso. (#10216)

Correct the URL parameter name from "inviteHash" to
"workspaceInviteHash" and enhance domain URL handling for
multi-workspace environments.
This commit is contained in:
Antoine Moreaux
2025-02-14 12:58:01 +01:00
committed by GitHub
parent 171091e1ef
commit a4a085392d
4 changed files with 30 additions and 6 deletions

View File

@ -5,7 +5,6 @@ import { ReactNode, act } from 'react';
import { MemoryRouter } from 'react-router-dom';
import { RecoilRoot, useRecoilValue } from 'recoil';
import { iconsState } from 'twenty-ui';
import { useAuth } from '@/auth/hooks/useAuth';
import { billingState } from '@/client-config/states/billingState';
import { isDebugModeState } from '@/client-config/states/isDebugModeState';
@ -17,6 +16,14 @@ import { isMultiWorkspaceEnabledState } from '@/client-config/states/isMultiWork
import { renderHook } from '@testing-library/react';
import { email, mocks, password, results, token } from '../__mocks__/useAuth';
const redirectSpy = jest.fn();
jest.mock('@/domain-manager/hooks/useRedirect', () => ({
useRedirect: jest.fn().mockImplementation(() => ({
redirect: redirectSpy,
})),
}));
const Wrapper = ({ children }: { children: ReactNode }) => (
<MockedProvider mocks={mocks} addTypename={false}>
<RecoilRoot>
@ -76,6 +83,22 @@ describe('useAuth', () => {
expect(mocks[1].result).toHaveBeenCalled();
});
it('should handle google sign-in', async () => {
const { result } = renderHooks();
await act(async () => {
await result.current.signInWithGoogle({
workspaceInviteHash: 'workspaceInviteHash',
});
});
expect(redirectSpy).toHaveBeenCalledWith(
expect.stringContaining(
'/auth/google?workspaceInviteHash=workspaceInviteHash',
),
);
});
it('should handle sign-out', async () => {
const { result } = renderHook(
() => {

View File

@ -455,7 +455,7 @@ export const useAuth = () => {
) => {
const url = new URL(`${REACT_APP_SERVER_BASE_URL}${path}`);
if (isDefined(params.workspaceInviteHash)) {
url.searchParams.set('inviteHash', params.workspaceInviteHash);
url.searchParams.set('workspaceInviteHash', params.workspaceInviteHash);
}
if (isDefined(params.workspacePersonalInviteToken)) {
url.searchParams.set(