71 lines
4.1 KiB
PL/PgSQL
71 lines
4.1 KiB
PL/PgSQL
-- ============================================================
|
|
-- 补齐缺失的 :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;
|