fix(Navigate): fix the issue where mobile login redirects to desktop page (#5805)

This commit is contained in:
Zeke Zhang 2024-12-06 10:50:27 +08:00 committed by GitHub
parent db7c9bac42
commit de19124fa1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 19 additions and 15 deletions

View File

@ -14,7 +14,6 @@ import { Field } from '@formily/core';
import { Schema, useField, useFieldSchema } from '@formily/react'; import { Schema, useField, useFieldSchema } from '@formily/react';
import { omit } from 'lodash'; import { omit } from 'lodash';
import React, { createContext, useCallback, useContext, useEffect, useMemo } from 'react'; import React, { createContext, useCallback, useContext, useEffect, useMemo } from 'react';
import { Navigate } from 'react-router-dom';
import { useAPIClient, useRequest } from '../api-client'; import { useAPIClient, useRequest } from '../api-client';
import { useAppSpin } from '../application/hooks/useAppSpin'; import { useAppSpin } from '../application/hooks/useAppSpin';
import { useResourceActionContext } from '../collection-manager/ResourceActionProvider'; import { useResourceActionContext } from '../collection-manager/ResourceActionProvider';
@ -29,6 +28,7 @@ import { useDataSourceKey } from '../data-source/data-source/DataSourceProvider'
import { SchemaComponentOptions, useDesignable } from '../schema-component'; import { SchemaComponentOptions, useDesignable } from '../schema-component';
import { useApp } from '../application'; import { useApp } from '../application';
import { NavigateToSigninWithRedirect } from '../user/CurrentUserProvider';
// 注意: 必须要对 useBlockRequestContext 进行引用,否则会导致 Data sources 页面报错,原因未知 // 注意: 必须要对 useBlockRequestContext 进行引用,否则会导致 Data sources 页面报错,原因未知
useBlockRequestContext; useBlockRequestContext;
@ -89,7 +89,7 @@ export const ACLRolesCheckProvider = (props) => {
return render(); return render();
} }
if (result.error) { if (result.error) {
return <Navigate replace to={'/signin'} />; return <NavigateToSigninWithRedirect />;
} }
return <ACLContext.Provider value={result}>{props.children}</ACLContext.Provider>; return <ACLContext.Provider value={result}>{props.children}</ACLContext.Provider>;
}; };

View File

@ -523,19 +523,19 @@ export const AdminProvider = (props) => {
<CurrentPageUidProvider> <CurrentPageUidProvider>
<CurrentTabUidProvider> <CurrentTabUidProvider>
<IsSubPageClosedByPageMenuProvider> <IsSubPageClosedByPageMenuProvider>
<ACLRolesCheckProvider> <NavigateIfNotSignIn>
<MenuSchemaRequestProvider> <ACLRolesCheckProvider>
<RemoteCollectionManagerProvider> <MenuSchemaRequestProvider>
<CurrentAppInfoProvider> <RemoteCollectionManagerProvider>
<NavigateIfNotSignIn> <CurrentAppInfoProvider>
<RemoteSchemaTemplateManagerProvider> <RemoteSchemaTemplateManagerProvider>
<VariablesProvider>{props.children}</VariablesProvider> <VariablesProvider>{props.children}</VariablesProvider>
</RemoteSchemaTemplateManagerProvider> </RemoteSchemaTemplateManagerProvider>
</NavigateIfNotSignIn> </CurrentAppInfoProvider>
</CurrentAppInfoProvider> </RemoteCollectionManagerProvider>
</RemoteCollectionManagerProvider> </MenuSchemaRequestProvider>
</MenuSchemaRequestProvider> </ACLRolesCheckProvider>
</ACLRolesCheckProvider> </NavigateIfNotSignIn>
</IsSubPageClosedByPageMenuProvider> </IsSubPageClosedByPageMenuProvider>
</CurrentTabUidProvider> </CurrentTabUidProvider>
</CurrentPageUidProvider> </CurrentPageUidProvider>

View File

@ -46,13 +46,17 @@ export const CurrentUserProvider = (props) => {
return <CurrentUserContext.Provider value={result}>{props.children}</CurrentUserContext.Provider>; return <CurrentUserContext.Provider value={result}>{props.children}</CurrentUserContext.Provider>;
}; };
export const NavigateIfNotSignIn = ({ children }) => { export const NavigateToSigninWithRedirect = () => {
const result = useCurrentUserContext();
const { pathname, search } = useLocationNoUpdate(); const { pathname, search } = useLocationNoUpdate();
const redirect = `?redirect=${pathname}${search}`; const redirect = `?redirect=${pathname}${search}`;
return <Navigate replace to={`/signin${redirect}`} />;
};
export const NavigateIfNotSignIn = ({ children }) => {
const result = useCurrentUserContext();
if (result.loading === false && !result.data?.data?.id) { if (result.loading === false && !result.data?.data?.id) {
return <Navigate replace to={`/signin${redirect}`} />; return <NavigateToSigninWithRedirect />;
} }
return <>{children}</>; return <>{children}</>;
}; };