- 新增 admin_roles/admin_permissions/admin_role_permissions 三表与种子数据(059迁移) - 接单平台全部管理路由从固定角色切换为细粒度权限校验 - 撤单按动作二次校验:退回大厅与取消订单分别要求对应权限 - 管理员账号页新增角色权限配置卡片(admin专属,带审计日志) - 权限更新走事务保证原子性;session实时解析权限确保修改立即生效
41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import { Router } from 'express'
|
|
|
|
import {
|
|
listAdminRolesWithPermissions,
|
|
updateAdminRolePermissions,
|
|
} from '../../services/admin/admin-rbac-service.js'
|
|
import { createJsonHandler, requireAdminRoles } from './session.js'
|
|
|
|
const router = Router()
|
|
|
|
router.use('/rbac', requireAdminRoles(['admin']))
|
|
|
|
router.get(
|
|
'/rbac',
|
|
createJsonHandler(() => listAdminRolesWithPermissions(), {
|
|
successMessage: 'ok',
|
|
errorMessage: '读取角色权限失败',
|
|
scope: '[admin/rbac]',
|
|
}),
|
|
)
|
|
|
|
router.put(
|
|
'/rbac/roles/:roleKey/permissions',
|
|
createJsonHandler(
|
|
(req) => updateAdminRolePermissions(req.params.roleKey, req.body?.permissions),
|
|
{
|
|
successMessage: '角色权限已更新',
|
|
errorMessage: '更新角色权限失败',
|
|
scope: '[admin/rbac/roles/:roleKey/permissions]',
|
|
audit: (req, data) => ({
|
|
action: 'admin_role_permissions_updated',
|
|
targetType: 'admin_role',
|
|
targetId: String(req.params.roleKey || ''),
|
|
data: data && typeof data === 'object' ? (data as Record<string, unknown>) : {},
|
|
}),
|
|
},
|
|
),
|
|
)
|
|
|
|
export default router
|