fix(): redirect loop + signout (#8899)
This commit is contained in:
@ -46,6 +46,7 @@ import { useLastAuthenticatedWorkspaceDomain } from '@/domain-manager/hooks/useL
|
|||||||
import { isMultiWorkspaceEnabledState } from '@/client-config/states/isMultiWorkspaceEnabledState';
|
import { isMultiWorkspaceEnabledState } from '@/client-config/states/isMultiWorkspaceEnabledState';
|
||||||
import { useIsCurrentLocationOnAWorkspaceSubdomain } from '@/domain-manager/hooks/useIsCurrentLocationOnAWorkspaceSubdomain';
|
import { useIsCurrentLocationOnAWorkspaceSubdomain } from '@/domain-manager/hooks/useIsCurrentLocationOnAWorkspaceSubdomain';
|
||||||
import { useReadWorkspaceSubdomainFromCurrentLocation } from '@/domain-manager/hooks/useReadWorkspaceSubdomainFromCurrentLocation';
|
import { useReadWorkspaceSubdomainFromCurrentLocation } from '@/domain-manager/hooks/useReadWorkspaceSubdomainFromCurrentLocation';
|
||||||
|
import { domainConfigurationState } from '@/domain-manager/states/domainConfigurationState';
|
||||||
|
|
||||||
export const useAuth = () => {
|
export const useAuth = () => {
|
||||||
const setTokenPair = useSetRecoilState(tokenPairState);
|
const setTokenPair = useSetRecoilState(tokenPairState);
|
||||||
@ -105,6 +106,9 @@ export const useAuth = () => {
|
|||||||
const isMultiWorkspaceEnabled = snapshot
|
const isMultiWorkspaceEnabled = snapshot
|
||||||
.getLoadable(isMultiWorkspaceEnabledState)
|
.getLoadable(isMultiWorkspaceEnabledState)
|
||||||
.getValue();
|
.getValue();
|
||||||
|
const domainConfiguration = snapshot
|
||||||
|
.getLoadable(domainConfigurationState)
|
||||||
|
.getValue();
|
||||||
const initialSnapshot = emptySnapshot.map(({ set }) => {
|
const initialSnapshot = emptySnapshot.map(({ set }) => {
|
||||||
set(iconsState, iconsValue);
|
set(iconsState, iconsValue);
|
||||||
set(authProvidersState, authProvidersValue);
|
set(authProvidersState, authProvidersValue);
|
||||||
@ -119,6 +123,7 @@ export const useAuth = () => {
|
|||||||
set(clientConfigApiStatusState, clientConfigApiStatus);
|
set(clientConfigApiStatusState, clientConfigApiStatus);
|
||||||
set(isCurrentUserLoadedState, isCurrentUserLoaded);
|
set(isCurrentUserLoadedState, isCurrentUserLoaded);
|
||||||
set(isMultiWorkspaceEnabledState, isMultiWorkspaceEnabled);
|
set(isMultiWorkspaceEnabledState, isMultiWorkspaceEnabled);
|
||||||
|
set(domainConfigurationState, domainConfiguration);
|
||||||
return undefined;
|
return undefined;
|
||||||
});
|
});
|
||||||
goToRecoilSnapshot(initialSnapshot);
|
goToRecoilSnapshot(initialSnapshot);
|
||||||
|
|||||||
@ -116,24 +116,20 @@ export const SignInUpGlobalScopeForm = () => {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<StyledContentContainer>
|
<StyledContentContainer>
|
||||||
<>
|
<MainButton
|
||||||
<MainButton
|
Icon={() => <IconGoogle size={theme.icon.size.lg} />}
|
||||||
Icon={() => <IconGoogle size={theme.icon.size.lg} />}
|
title="Continue with Google"
|
||||||
title="Continue with Google"
|
onClick={signInWithGoogle}
|
||||||
onClick={signInWithGoogle}
|
fullWidth
|
||||||
fullWidth
|
/>
|
||||||
/>
|
<HorizontalSeparator visible={false} />
|
||||||
<HorizontalSeparator visible={false} />
|
<MainButton
|
||||||
</>
|
Icon={() => <IconMicrosoft size={theme.icon.size.lg} />}
|
||||||
<>
|
title="Continue with Microsoft"
|
||||||
<MainButton
|
onClick={signInWithMicrosoft}
|
||||||
Icon={() => <IconMicrosoft size={theme.icon.size.lg} />}
|
fullWidth
|
||||||
title="Continue with Microsoft"
|
/>
|
||||||
onClick={signInWithMicrosoft}
|
<HorizontalSeparator visible={false} />
|
||||||
fullWidth
|
|
||||||
/>
|
|
||||||
<HorizontalSeparator visible={false} />
|
|
||||||
</>
|
|
||||||
<HorizontalSeparator visible />
|
<HorizontalSeparator visible />
|
||||||
{/* eslint-disable-next-line react/jsx-props-no-spreading */}
|
{/* eslint-disable-next-line react/jsx-props-no-spreading */}
|
||||||
<FormProvider {...form}>
|
<FormProvider {...form}>
|
||||||
|
|||||||
@ -7,6 +7,7 @@ export const useReadWorkspaceSubdomainFromCurrentLocation = () => {
|
|||||||
const domainConfiguration = useRecoilValue(domainConfigurationState);
|
const domainConfiguration = useRecoilValue(domainConfigurationState);
|
||||||
const { isOnAWorkspaceSubdomain } =
|
const { isOnAWorkspaceSubdomain } =
|
||||||
useIsCurrentLocationOnAWorkspaceSubdomain();
|
useIsCurrentLocationOnAWorkspaceSubdomain();
|
||||||
|
|
||||||
if (!isDefined(domainConfiguration.frontDomain)) {
|
if (!isDefined(domainConfiguration.frontDomain)) {
|
||||||
throw new Error('frontDomain is not defined');
|
throw new Error('frontDomain is not defined');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,7 +24,11 @@ export const WorkspaceProviderEffect = () => {
|
|||||||
const isMultiWorkspaceEnabled = useRecoilValue(isMultiWorkspaceEnabledState);
|
const isMultiWorkspaceEnabled = useRecoilValue(isMultiWorkspaceEnabledState);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isMultiWorkspaceEnabled && isDefined(workspacePublicData?.subdomain)) {
|
if (
|
||||||
|
isMultiWorkspaceEnabled &&
|
||||||
|
isDefined(workspacePublicData?.subdomain) &&
|
||||||
|
workspacePublicData.subdomain !== workspaceSubdomain
|
||||||
|
) {
|
||||||
redirectToWorkspaceDomain(workspacePublicData.subdomain);
|
redirectToWorkspaceDomain(workspacePublicData.subdomain);
|
||||||
}
|
}
|
||||||
}, [
|
}, [
|
||||||
|
|||||||
@ -45,9 +45,9 @@ export const cookieStorageEffect =
|
|||||||
): AtomEffect<T | null> =>
|
): AtomEffect<T | null> =>
|
||||||
({ setSelf, onSet }) => {
|
({ setSelf, onSet }) => {
|
||||||
const savedValue = cookieStorage.getItem(key);
|
const savedValue = cookieStorage.getItem(key);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
isDefined(savedValue) &&
|
isDefined(savedValue) &&
|
||||||
|
savedValue.length !== 0 &&
|
||||||
(!isDefined(hooks?.validateInitFn) ||
|
(!isDefined(hooks?.validateInitFn) ||
|
||||||
hooks.validateInitFn(JSON.parse(savedValue)))
|
hooks.validateInitFn(JSON.parse(savedValue)))
|
||||||
) {
|
) {
|
||||||
|
|||||||
Reference in New Issue
Block a user