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 { omit } from 'lodash';
import React, { createContext, useCallback, useContext, useEffect, useMemo } from 'react';
import { Navigate } from 'react-router-dom';
import { useAPIClient, useRequest } from '../api-client';
import { useAppSpin } from '../application/hooks/useAppSpin';
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 { useApp } from '../application';
import { NavigateToSigninWithRedirect } from '../user/CurrentUserProvider';
// 注意: 必须要对 useBlockRequestContext 进行引用,否则会导致 Data sources 页面报错,原因未知
useBlockRequestContext;
@ -89,7 +89,7 @@ export const ACLRolesCheckProvider = (props) => {
return render();
}
if (result.error) {
return <Navigate replace to={'/signin'} />;
return <NavigateToSigninWithRedirect />;
}
return <ACLContext.Provider value={result}>{props.children}</ACLContext.Provider>;
};

View File

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

View File

@ -46,13 +46,17 @@ export const CurrentUserProvider = (props) => {
return <CurrentUserContext.Provider value={result}>{props.children}</CurrentUserContext.Provider>;
};
export const NavigateIfNotSignIn = ({ children }) => {
const result = useCurrentUserContext();
export const NavigateToSigninWithRedirect = () => {
const { pathname, search } = useLocationNoUpdate();
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) {
return <Navigate replace to={`/signin${redirect}`} />;
return <NavigateToSigninWithRedirect />;
}
return <>{children}</>;
};