From e2ae791fa2133b56de2cdbf505e73b39b52f4810 Mon Sep 17 00:00:00 2001 From: wren <“porlong@qq.com”> Date: Thu, 30 Apr 2026 11:36:11 +0800 Subject: [PATCH] fix: allow admin role to edit in role-permissions page Previously only provincial_admin could edit roles/permissions in the UI. Now admin (city-level admin) role can also edit. The backend already enforces fine-grained permission checks, so the UI gate just needs to match can_manage semantics. --- app/routes/role-permissions._index.tsx | 32 +++++++++++++------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/app/routes/role-permissions._index.tsx b/app/routes/role-permissions._index.tsx index 2e9655b..d103f49 100644 --- a/app/routes/role-permissions._index.tsx +++ b/app/routes/role-permissions._index.tsx @@ -948,7 +948,7 @@ export default function RolePermissions() { // v3.3: 检查当前用户角色和地区 const [currentUserRole, setCurrentUserRole] = useState(''); const [currentUserArea, setCurrentUserArea] = useState(''); - const [isProvincialAdmin, setIsProvincialAdmin] = useState(false); + const [canEdit, setCanEdit] = useState(false); const [isCityAdmin, setIsCityAdmin] = useState(false); // 模态框状态 @@ -1029,13 +1029,13 @@ export default function RolePermissions() { setCurrentUserRole(userRole); setCurrentUserArea(userArea); - setIsProvincialAdmin(userRole === 'provincial_admin'); + setCanEdit((userRole === 'provincial_admin' || userRole === 'admin')); setIsCityAdmin(userRole === 'admin'); console.log('🔑 [RolePermissions v3.3] 当前用户信息:', { role: userRole, area: userArea, - isProvincialAdmin: userRole === 'provincial_admin', + canEdit: (userRole === 'provincial_admin' || userRole === 'admin'), isCityAdmin: userRole === 'admin' }); } catch (e) { @@ -1569,14 +1569,14 @@ export default function RolePermissions() { } }; - // 保存权限 - v3.3: 同时保存路由权限和API权限,仅省级管理员可操作 + // 保存权限 - 省级管理员和地区管理员可操作 // v3.5: 增加事务性操作和回滚机制 const handleSavePermissions = async () => { if (!selectedRole) return; - // v3.3: 前置权限检查(仅省级管理员) - if (!isProvincialAdmin) { - toastService.error('权限不足:仅省级管理员可以修改角色路由权限'); + // 前置权限检查(省级管理员和地区管理员) + if (!canEdit) { + toastService.error('权限不足:仅省级管理员和地区管理员可以修改角色路由权限'); return; } @@ -1593,7 +1593,7 @@ export default function RolePermissions() { // v3.3: 处理权限不足错误 if (!routeResult.success) { if (routeResult.code === 4003) { - toastService.error('权限不足:仅省级管理员可以修改角色路由权限'); + toastService.error('权限不足:仅省级管理员和地区管理员可以修改角色路由权限'); } else { toastService.error(routeResult.message); } @@ -1741,7 +1741,7 @@ export default function RolePermissions() { checked={selectedPermissionIds.includes(permission.id)} onChange={(e) => handleTogglePermission(permission, e.target.checked)} style={{ margin: '3px 0 0 0', flexShrink: 0 }} - disabled={!isProvincialAdmin} + disabled={!canEdit} /> {isShared && (