修复权限操作

This commit is contained in:
2025-12-08 21:36:03 +08:00
parent a4479971a8
commit 0a3c1a2735
5 changed files with 175 additions and 39 deletions
+17 -14
View File
@@ -399,22 +399,25 @@ export async function getRoleRoutesWithPermissions(roleId: number): Promise<{
return ids;
};
// 收集所有已选中的权限ID(从当前角色的权限中)
const collectPermissionIds = (routes: RouteInfo[]): number[] => {
let ids: number[] = [];
routes.forEach(route => {
if (route.permissions) {
ids = ids.concat(route.permissions.map(p => p.id));
}
if (route.children) {
ids = ids.concat(collectPermissionIds(route.children));
}
});
return ids;
};
// v3.5: 修复BUG - 删除了 collectPermissionIds 函数
// BUG说明:从路由元数据收集权限ID是错误的,因为路由的permissions数组包含的仅仅是权限定义,
// 而不是实际授权状态。实际授权状态应该从 `/api/v3/rbac/role-permissions` 接口获取。
//
// 之前的错误实现:
// const collectPermissionIds = (routes: RouteInfo[]): number[] => {
// let ids: number[] = [];
// routes.forEach(route => {
// if (route.permissions) {
// ids = ids.concat(route.permissions.map(p => p.id));
// }
// });
// return ids;
// };
//
// 修复方案:返回空数组,由调用方使用 getRolePermissions() 获取实际授权数据
const selectedRouteIds = collectRouteIds(mappedRoutes);
const selectedPermissionIds = collectPermissionIds(mappedRoutes);
const selectedPermissionIds: number[] = []; // v3.5: 修复BUG - 返回空数组
return {
routes: mappedRoutes,