migration: 补齐 sys_element 缺失的 :operation 权限码 + 角色分配 SQL
This commit is contained in:
70
db_migrations/fix_missing_operation_permissions.sql
Normal file
70
db_migrations/fix_missing_operation_permissions.sql
Normal file
@ -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;
|
||||
Reference in New Issue
Block a user