Files
qitongxue-admin/src/utils/permissions.js
2026-09-30 17:00:29 +08:00

63 lines
2.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 前端权限镜像(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 || '-'
}