2026-07-15 09:22:58 +08:00
|
|
|
|
-- ============================================================
|
|
|
|
|
|
-- migrations_add_cross_domain_permission.sql
|
|
|
|
|
|
-- 新增「全局跨域访问」权限节点,支持基于权限码的动态跨公司数据访问控制
|
|
|
|
|
|
--
|
|
|
|
|
|
-- 逻辑:
|
|
|
|
|
|
-- - 拥有 crossDomain 权限的角色 → 可查看所有公司数据
|
|
|
|
|
|
-- - 无此权限的角色 → 只能看本公司数据
|
|
|
|
|
|
--
|
|
|
|
|
|
-- 执行方式:
|
|
|
|
|
|
-- psql -h <host> -U postgres -d inventory_system -f migrations_add_cross_domain_permission.sql
|
|
|
|
|
|
-- ============================================================
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN;
|
|
|
|
|
|
|
|
|
|
|
|
-- 1. 向 sys_element 插入跨域权限码(挂 system 菜单下)
|
|
|
|
|
|
INSERT INTO sys_element (menu_code, name, code, element_type)
|
2026-07-15 11:11:40 +08:00
|
|
|
|
SELECT 'system_mgmt', '全局跨域访问', 'crossDomain', 'element'
|
2026-07-15 09:22:58 +08:00
|
|
|
|
WHERE NOT EXISTS (
|
|
|
|
|
|
SELECT 1 FROM sys_element WHERE code = 'crossDomain'
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
-- 2. 向 sys_menu 插入菜单节点(如果 system 菜单下还缺此菜单项)
|
|
|
|
|
|
-- 注意: 这是一个能力型权限,不一定需要前端菜单入口,
|
|
|
|
|
|
-- 如果需要在权限分配页面中可见,保留此 INSERT;
|
|
|
|
|
|
-- 如果纯后端控制,此行可注释。
|
|
|
|
|
|
INSERT INTO sys_menu (code, name, parent_code, is_visible)
|
|
|
|
|
|
SELECT 'system_cross_domain', '全局跨域访问', 'system_mgmt', true
|
|
|
|
|
|
WHERE NOT EXISTS (
|
|
|
|
|
|
SELECT 1 FROM sys_menu WHERE code = 'system_cross_domain'
|
|
|
|
|
|
);
|
|
|
|
|
|
|
2026-07-15 11:11:40 +08:00
|
|
|
|
-- 3. 默认分配给 SUPER_ADMIN 和 SUPERVISOR 角色
|
2026-07-15 09:22:58 +08:00
|
|
|
|
INSERT INTO sys_role_permission (role_code, target_code, type)
|
|
|
|
|
|
SELECT 'SUPER_ADMIN', 'crossDomain', 'element'
|
|
|
|
|
|
WHERE NOT EXISTS (
|
|
|
|
|
|
SELECT 1 FROM sys_role_permission
|
|
|
|
|
|
WHERE role_code = 'SUPER_ADMIN' AND target_code = 'crossDomain'
|
|
|
|
|
|
);
|
|
|
|
|
|
|
2026-07-15 11:11:40 +08:00
|
|
|
|
INSERT INTO sys_role_permission (role_code, target_code, type)
|
|
|
|
|
|
SELECT 'SUPERVISOR', 'crossDomain', 'element'
|
|
|
|
|
|
WHERE NOT EXISTS (
|
|
|
|
|
|
SELECT 1 FROM sys_role_permission
|
|
|
|
|
|
WHERE role_code = 'SUPERVISOR' AND target_code = 'crossDomain'
|
|
|
|
|
|
);
|
|
|
|
|
|
|
2026-07-15 09:22:58 +08:00
|
|
|
|
-- 4. 验证
|
|
|
|
|
|
SELECT code, name, menu_code, element_type
|
|
|
|
|
|
FROM sys_element WHERE code = 'crossDomain';
|
|
|
|
|
|
|
|
|
|
|
|
SELECT role_code, target_code, type
|
|
|
|
|
|
FROM sys_role_permission WHERE target_code = 'crossDomain';
|
|
|
|
|
|
|
|
|
|
|
|
COMMIT;
|