/** * 前端权限镜像(T17)。 * * 仅用于「隐藏无权入口」的体验优化——真正的拦截在服务端 AdminPerm 中间件。 * 这里的角色→权限点映射必须与后端 internal/logic/admin_perm.go 保持一致。 */ export const PERM = { USER_WRITE: 'user:write', TOOL_WRITE: 'tool:write', MODULE_WRITE: 'module:write', LEVEL_WRITE: 'level:write', FEEDBACK_WRITE: 'feedback:write', QUOTA_WRITE: 'quota:write', EVENT_WRITE: 'event:write', ADMIN_MANAGE: 'admin:manage', AUDIT_READ: 'audit:read', ORDER_READ: 'order:read', ORDER_WRITE: 'order:write', // 软件开发服务 / 附件管理(迭代-2026-09-29,与后端 admin_perm.go 对齐) GOODS_WRITE: 'goods:write', ATTACHMENT_WRITE: 'attachment:write', } const ROLE_PERMISSIONS = { super: [ PERM.USER_WRITE, PERM.TOOL_WRITE, PERM.MODULE_WRITE, PERM.LEVEL_WRITE, PERM.FEEDBACK_WRITE, PERM.QUOTA_WRITE, PERM.EVENT_WRITE, PERM.ADMIN_MANAGE, PERM.AUDIT_READ, PERM.ORDER_READ, PERM.ORDER_WRITE, PERM.GOODS_WRITE, PERM.ATTACHMENT_WRITE, ], operator: [ PERM.USER_WRITE, PERM.TOOL_WRITE, PERM.MODULE_WRITE, PERM.LEVEL_WRITE, PERM.FEEDBACK_WRITE, PERM.QUOTA_WRITE, PERM.EVENT_WRITE, PERM.ORDER_READ, PERM.ORDER_WRITE, PERM.GOODS_WRITE, PERM.ATTACHMENT_WRITE, ], readonly: [ PERM.ORDER_READ, ], } /** 角色的权限点列表(未知角色 → 空,按最小权限)。 */ export function permissionsOf(role) { return ROLE_PERMISSIONS[role] || [] } /** 是否拥有权限点;perm 为空表示「仅需登录」。 */ export function hasPermission(role, perm) { if (!perm) return true return permissionsOf(role).includes(perm) } /** 角色值 → 展示名。 */ export const ROLE_OPTIONS = [ { value: 'super', label: '超级管理员' }, { value: 'operator', label: '运营' }, { value: 'readonly', label: '只读' }, ] export function roleLabel(role) { return ROLE_OPTIONS.find((r) => r.value === role)?.label || role || '-' }