feat: 全模块公司隔离 + crossDomain权限码动态跨域控制

- get_current_company_filter: 新增_has_cross_domain_permission, 权限码替代硬编码
- 补全11个Service的get_current_company_filter调用(semi/product/service/outbound/bom/trans/scrap/summary)
- base/search修复: search_material此前无隔离, 已补全
- get_current_company_filter兜底: JWT缺company_name时返回__NO_COMPANY__防止放行
- permission.py: _get_operator_company补全返回值, 修复权限页保存逻辑
- 新增crossDomain迁移脚本, element_type=element挂system_mgmt下
This commit is contained in:
yueli
2026-07-15 11:11:40 +08:00
parent 56edb92d80
commit e1417d740a
14 changed files with 186 additions and 14 deletions

View File

@ -14,7 +14,7 @@ BEGIN;
-- 1. 向 sys_element 插入跨域权限码(挂 system 菜单下)
INSERT INTO sys_element (menu_code, name, code, element_type)
SELECT 'system_mgmt', '全局跨域访问', 'crossDomain', 'button'
SELECT 'system_mgmt', '全局跨域访问', 'crossDomain', 'element'
WHERE NOT EXISTS (
SELECT 1 FROM sys_element WHERE code = 'crossDomain'
);
@ -29,7 +29,7 @@ WHERE NOT EXISTS (
SELECT 1 FROM sys_menu WHERE code = 'system_cross_domain'
);
-- 3. 默认分配给 SUPER_ADMIN 角色
-- 3. 默认分配给 SUPER_ADMIN 和 SUPERVISOR 角色
INSERT INTO sys_role_permission (role_code, target_code, type)
SELECT 'SUPER_ADMIN', 'crossDomain', 'element'
WHERE NOT EXISTS (
@ -37,6 +37,13 @@ WHERE NOT EXISTS (
WHERE role_code = 'SUPER_ADMIN' AND target_code = 'crossDomain'
);
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'
);
-- 4. 验证
SELECT code, name, menu_code, element_type
FROM sys_element WHERE code = 'crossDomain';