From b29e59be08ff72266b0510f94835de38516bcca5 Mon Sep 17 00:00:00 2001 From: Leo <98382335+gaoziman@users.noreply.github.com> Date: Mon, 7 Jul 2025 01:11:50 +0800 Subject: [PATCH] =?UTF-8?q?feat(permissions):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=AE=8C=E6=95=B4=E7=9A=84=E6=9D=83=E9=99=90=E5=B8=B8=E9=87=8F?= =?UTF-8?q?=E6=98=A0=E5=B0=84=E5=92=8C=E7=B1=BB=E5=9E=8B=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增权限常量映射文件,定义系统所有权限标识 - 支持用户管理、角色管理、菜单管理、登录日志权限 - 添加权限组合配置和类型推断支持 - 更新登录用户信息类型,增加buttons权限字段 - 为后续权限指令系统提供基础支撑 Breaking Changes: 无 --- src/constants/permissions.ts | 82 ++++++++++++++++++++++++++++++++++++ src/typings/api/login.d.ts | 2 + 2 files changed, 84 insertions(+) create mode 100644 src/constants/permissions.ts 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 */