diff --git a/src/constants/permissions.ts b/src/constants/permissions.ts new file mode 100644 index 0000000..2f49df8 --- /dev/null +++ b/src/constants/permissions.ts @@ -0,0 +1,82 @@ +/** + * 权限常量映射 + * 根据后端接口权限标识定义前端权限常量 + */ + +// 系统管理模块权限 +export const PERMISSIONS = { + // 用户管理权限 + USER: { + LIST: 'system:user:list', + ADD: 'system:user:add', + UPDATE: 'system:user:update', + DELETE: 'system:user:delete', + RESET_PWD: 'system:user:resetPwd', + EXPORT: 'system:user:export', + IMPORT: 'system:user:import', + ROLE: 'system:user:role', // 分配角色权限 + }, + + // 角色管理权限 + ROLE: { + LIST: 'system:role:list', + ADD: 'system:role:add', + UPDATE: 'system:role:update', + DELETE: 'system:role:delete', + MENU: 'system:role:menu', // 分配菜单权限 + }, + + // 菜单管理权限 + MENU: { + LIST: 'system:menu:list', + ADD: 'system:menu:add', + UPDATE: 'system:menu:update', + DELETE: 'system:menu:delete', + }, + + // 登录日志权限 + LOGIN_LOG: { + LIST: 'system:loginlog:list', + ADD: 'system:loginlog:add', + UPDATE: 'system:loginlog:update', + DELETE: 'system:loginlog:delete', + }, +} as const + +// 权限类型推断 +export type PermissionType = typeof PERMISSIONS[keyof typeof PERMISSIONS][keyof typeof PERMISSIONS[keyof typeof PERMISSIONS]] + +// 常用权限组合 +export const PERMISSION_GROUPS = { + // 用户管理相关权限 + USER_MANAGEMENT: [ + PERMISSIONS.USER.LIST, + PERMISSIONS.USER.ADD, + PERMISSIONS.USER.UPDATE, + PERMISSIONS.USER.DELETE, + ], + + // 角色管理相关权限 + ROLE_MANAGEMENT: [ + PERMISSIONS.ROLE.LIST, + PERMISSIONS.ROLE.ADD, + PERMISSIONS.ROLE.UPDATE, + PERMISSIONS.ROLE.DELETE, + ], + + // 菜单管理相关权限 + MENU_MANAGEMENT: [ + PERMISSIONS.MENU.LIST, + PERMISSIONS.MENU.ADD, + PERMISSIONS.MENU.UPDATE, + PERMISSIONS.MENU.DELETE, + ], + + // 系统管理员权限(包含所有权限) + SYSTEM_ADMIN: [ + ...Object.values(PERMISSIONS.USER), + ...Object.values(PERMISSIONS.ROLE), + ...Object.values(PERMISSIONS.MENU), + ...Object.values(PERMISSIONS.LOGIN_LOG), + ], +} as const diff --git a/src/typings/api/login.d.ts b/src/typings/api/login.d.ts index f0c9aef..bd3a55d 100644 --- a/src/typings/api/login.d.ts +++ b/src/typings/api/login.d.ts @@ -8,6 +8,8 @@ namespace Api { id: number /** 用户角色类型 */ role: Entity.RoleType[] + /** 用户权限按钮列表 */ + buttons: string[] /** 访问token */ accessToken: string /** 访问token */