fix: align permission navigation and page access

This commit is contained in:
2026-07-11 14:55:49 +08:00
parent 1e1c476bc3
commit b6fca99390
27 changed files with 434 additions and 49 deletions

View File

@@ -1,5 +1,7 @@
import React from 'react';
import { Result } from 'antd';
import { Result, Button } from 'antd';
import { useNavigate } from 'react-router-dom';
import { findFirstAccessiblePath } from '../auth/permission-navigation';
import { usePermission } from '../hooks/usePermission';
interface PermissionRouteProps {
@@ -8,9 +10,18 @@ interface PermissionRouteProps {
}
const PermissionRoute: React.FC<PermissionRouteProps> = ({ permission, children }) => {
const { hasPermission } = usePermission();
const { permissions, hasPermission } = usePermission();
const navigate = useNavigate();
if (!hasPermission(permission)) {
return <Result status="403" title="无权访问" subTitle="您没有访问此页面的权限" />;
const firstPath = findFirstAccessiblePath(permissions);
return (
<Result
status="403"
title="无权访问"
subTitle="您没有访问此页面的权限"
extra={firstPath ? <Button type="primary" onClick={() => navigate(firstPath, { replace: true })}>访</Button> : undefined}
/>
);
}
return <>{children}</>;
};