Files
KCGL/db_migrations/add_material_approval_perm.sql
yueli 4146f35010 feat(permission): “出库/借库需审批”开关权限化——仅主管/超管可见可改
- 新增权限码 material_list:isApprovalRequired,授予仅 SUPER_ADMIN/SUPERVISOR(收回其它角色)
- 物料列表该列仅持码角色可见;后端批量端点与字段脱敏均改按新码校验,其余角色看不到值也无法改
2026-09-09 10:47:36 +08:00

33 lines
1.6 KiB
PL/PgSQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- =============================================================================
-- 一次性迁移:物料“出库/借库需审批”开关的独立权限项
-- 权限码 material_list:isApprovalRequired操作级
-- 仅授予SUPER_ADMIN(超管)、SUPERVISOR(主管)。其余角色不可见、不可修改。
-- 幂等:重复执行安全(先收回“非主管/超管”的该权限,再确保主管/超管持有)。
-- 执行: docker exec -i inventory_db psql -U test -d inventory_system < 本文件
-- =============================================================================
BEGIN;
-- 1) 注册权限元素(幂等)
INSERT INTO sys_element (menu_code, name, code, element_type)
SELECT 'material_list', '出库/借库需审批(修改)', 'material_list:isApprovalRequired', 'operation'
WHERE NOT EXISTS (SELECT 1 FROM sys_element WHERE code = 'material_list:isApprovalRequired');
-- 2) 收回除主管/超管外所有角色的该权限(幂等)
DELETE FROM sys_role_permission
WHERE target_code = 'material_list:isApprovalRequired'
AND type = 'element'
AND role_code NOT IN ('SUPER_ADMIN', 'SUPERVISOR');
-- 3) 确保主管/超管持有(幂等)
INSERT INTO sys_role_permission (role_code, target_code, type, company_name)
SELECT v.role_code, 'material_list:isApprovalRequired', 'element', NULL
FROM (VALUES ('SUPER_ADMIN'), ('SUPERVISOR')) AS v(role_code)
WHERE NOT EXISTS (
SELECT 1 FROM sys_role_permission r
WHERE r.role_code = v.role_code
AND r.target_code = 'material_list:isApprovalRequired'
AND r.type = 'element'
);
COMMIT;