feat: 1. 添加交叉评查中的相关页面的按钮与权限的绑定控制。 2. 完善权限校验的hook函数,添加指定的交叉评查的相关的权限。
fix: 1. 修复交叉评查中无法高亮文档的问题。
This commit is contained in:
@@ -35,6 +35,34 @@ interface RootLoaderData {
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 交叉评查模块默认权限配置
|
||||
* 当 permissionMap 中没有配置时,使用此默认配置
|
||||
*/
|
||||
const CROSS_CHECKING_DEFAULT_PERMISSIONS: Record<string, string[]> = {
|
||||
'/cross-checking': [
|
||||
'cross_review:task:read',
|
||||
// 'cross_review:task:create',
|
||||
// 'cross_review:document:complete',
|
||||
'cross_review:progress:view',
|
||||
'cross_review:proposal:create',
|
||||
'cross_review:proposal:delete',
|
||||
'cross_review:proposal:read',
|
||||
// 'cross_review:proposal:vote'
|
||||
],
|
||||
'/cross-checking/upload': [
|
||||
// 'cross_review:task:create'
|
||||
],
|
||||
'/cross-checking/result': [
|
||||
// 'cross_review:document:complete',
|
||||
'cross_review:progress:view',
|
||||
'cross_review:proposal:create',
|
||||
'cross_review:proposal:delete',
|
||||
'cross_review:proposal:read',
|
||||
// 'cross_review:proposal:vote'
|
||||
]
|
||||
};
|
||||
|
||||
export function usePermission() {
|
||||
const rootData = useRouteLoaderData("root") as RootLoaderData;
|
||||
const location = useLocation();
|
||||
@@ -46,7 +74,28 @@ export function usePermission() {
|
||||
// 🔑 根据当前路由获取权限列表
|
||||
const currentPath = location.pathname;
|
||||
// console.log('currentPath', currentPath)
|
||||
const currentPermissions = permissionMap[currentPath] || [];
|
||||
|
||||
// 获取当前路由的权限:优先使用 permissionMap,否则使用交叉评查默认配置
|
||||
const getCrossCheckingPermissions = (): string[] => {
|
||||
// 检查是否是交叉评查相关路由
|
||||
if (currentPath.startsWith('/cross-checking')) {
|
||||
// 精确匹配
|
||||
if (CROSS_CHECKING_DEFAULT_PERMISSIONS[currentPath]) {
|
||||
return CROSS_CHECKING_DEFAULT_PERMISSIONS[currentPath];
|
||||
}
|
||||
// 处理带参数的路由,如 /cross-checking/result?id=xxx
|
||||
const basePath = currentPath.split('?')[0];
|
||||
if (CROSS_CHECKING_DEFAULT_PERMISSIONS[basePath]) {
|
||||
return CROSS_CHECKING_DEFAULT_PERMISSIONS[basePath];
|
||||
}
|
||||
}
|
||||
return [];
|
||||
};
|
||||
|
||||
// 优先使用 permissionMap 中的权限,如果没有则使用交叉评查默认权限
|
||||
const currentPermissions = permissionMap[currentPath]?.length > 0
|
||||
? permissionMap[currentPath]
|
||||
: getCrossCheckingPermissions();
|
||||
|
||||
// 向后兼容:如果存在旧的permissions数组,也要支持
|
||||
const legacyPermissions = rootData?.permissions || [];
|
||||
|
||||
Reference in New Issue
Block a user