From 9c3fcbca4c2c02a6a9e658e5f56a42c0c1e7187a Mon Sep 17 00:00:00 2001 From: yueli Date: Fri, 17 Jul 2026 15:29:59 +0800 Subject: [PATCH] =?UTF-8?q?migration:=20=E8=A1=A5=E9=BD=90=20sys=5Felement?= =?UTF-8?q?=20=E7=BC=BA=E5=A4=B1=E7=9A=84=20:operation=20=E6=9D=83?= =?UTF-8?q?=E9=99=90=E7=A0=81=20+=20=E8=A7=92=E8=89=B2=E5=88=86=E9=85=8D?= =?UTF-8?q?=20SQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fix_missing_operation_permissions.sql | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 db_migrations/fix_missing_operation_permissions.sql diff --git a/db_migrations/fix_missing_operation_permissions.sql b/db_migrations/fix_missing_operation_permissions.sql new file mode 100644 index 0000000..c72afc7 --- /dev/null +++ b/db_migrations/fix_missing_operation_permissions.sql @@ -0,0 +1,70 @@ +-- ============================================================ +-- 补齐缺失的 :operation 操作权限 & 字段权限 +-- 创建日期: 2026-07-17 +-- 说明: 前端按钮使用 hasPermission('xxx:operation') 控制显示 +-- 但 sys_element 中缺少对应的元素权限码,导致: +-- 1. 审批按钮可见但 can_approve 拒绝(出库/借库审批) +-- 2. 用户管理操作按钮不显示 +-- 3. 权限分配按钮不显示 +-- 4. 密码字段被隐藏 +-- ============================================================ +BEGIN; + +-- ===== 1. 出库审批操作权限 ===== +INSERT INTO sys_element (menu_code, name, code, element_type) +SELECT 'outbound_approval', '审批操作', 'outbound_approval:operation', 'column' +WHERE NOT EXISTS (SELECT 1 FROM sys_element WHERE code = 'outbound_approval:operation'); + +INSERT INTO sys_role_permission (role_code, target_code, type) +SELECT 'SUPERVISOR', 'outbound_approval:operation', 'element' +WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPERVISOR' AND target_code = 'outbound_approval:operation'); + +INSERT INTO sys_role_permission (role_code, target_code, type) +SELECT 'SUPER_ADMIN', 'outbound_approval:operation', 'element' +WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPER_ADMIN' AND target_code = 'outbound_approval:operation'); + +-- ===== 2. 借库审批操作权限 ===== +INSERT INTO sys_element (menu_code, name, code, element_type) +SELECT 'op_borrow_approval', '审批操作', 'op_borrow_approval:operation', 'column' +WHERE NOT EXISTS (SELECT 1 FROM sys_element WHERE code = 'op_borrow_approval:operation'); + +INSERT INTO sys_role_permission (role_code, target_code, type) +SELECT role_code, 'op_borrow_approval:operation', 'element' +FROM (SELECT DISTINCT role_code FROM sys_role_permission WHERE target_code = 'op_borrow_approval') t +WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = t.role_code AND target_code = 'op_borrow_approval:operation'); + +-- ===== 3. 用户管理操作权限 ===== +INSERT INTO sys_element (menu_code, name, code, element_type) +SELECT 'system_user', '用户操作', 'system_user:operation', 'column' +WHERE NOT EXISTS (SELECT 1 FROM sys_element WHERE code = 'system_user:operation'); + +INSERT INTO sys_role_permission (role_code, target_code, type) +SELECT 'SUPERVISOR', 'system_user:operation', 'element' +WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPERVISOR' AND target_code = 'system_user:operation'); + +-- ===== 4. 权限分配操作权限 ===== +INSERT INTO sys_role_permission (role_code, target_code, type) +SELECT 'SUPERVISOR', 'system_permission:operation', 'element' +WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPERVISOR' AND target_code = 'system_permission:operation'); + +-- ===== 5. 密码管理字段权限 ===== +INSERT INTO sys_element (menu_code, name, code, element_type) +SELECT 'system_user', '密码管理', 'system_user:password', 'column' +WHERE NOT EXISTS (SELECT 1 FROM sys_element WHERE code = 'system_user:password'); + +INSERT INTO sys_role_permission (role_code, target_code, type) +SELECT 'SUPER_ADMIN', 'system_user:password', 'element' +WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPER_ADMIN' AND target_code = 'system_user:password'); + +INSERT INTO sys_role_permission (role_code, target_code, type) +SELECT 'SUPERVISOR', 'system_user:password', 'element' +WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPERVISOR' AND target_code = 'system_user:password'); + +-- 验证 +SELECT 'outbound_approval:operation' AS perm, count(*) FROM sys_role_permission WHERE target_code = 'outbound_approval:operation' +UNION ALL SELECT 'op_borrow_approval:operation', count(*) FROM sys_role_permission WHERE target_code = 'op_borrow_approval:operation' +UNION ALL SELECT 'system_user:operation', count(*) FROM sys_role_permission WHERE target_code = 'system_user:operation' +UNION ALL SELECT 'system_permission:operation', count(*) FROM sys_role_permission WHERE target_code = 'system_permission:operation' +UNION ALL SELECT 'system_user:password', count(*) FROM sys_role_permission WHERE target_code = 'system_user:password'; + +COMMIT;