35 lines
1.7 KiB
MySQL
35 lines
1.7 KiB
MySQL
|
|
-- =============================================================================
|
|||
|
|
-- 补注册 scrap_selection 权限码
|
|||
|
|
--
|
|||
|
|
-- 背景:
|
|||
|
|
-- GET /api/v1/scrap/scan(按单报废执行页的扫码查库存接口)自始就声明需要
|
|||
|
|
-- scrap_selection,但该权限码从未写入 sys_element / sys_role_permission。
|
|||
|
|
-- 结果 permission_required('scrap_selection') 的精确匹配与展开匹配(前缀
|
|||
|
|
-- scrap_selection:)全部落空,导致除 SUPER_ADMIN 外没有任何角色能调用扫码接口。
|
|||
|
|
--
|
|||
|
|
-- 处理:
|
|||
|
|
-- 1) 注册 scrap_selection 权限元素(挂在 scrap_create 菜单下,与 scrap_apply /
|
|||
|
|
-- scrap_execute 同级);
|
|||
|
|
-- 2) 授予所有已持有 scrap_execute(按单报废执行)的角色,
|
|||
|
|
-- 保证「执行报废」的人必然可以扫码。
|
|||
|
|
--
|
|||
|
|
-- 执行: docker exec -i inventory_db psql -U test -d inventory_system < 本文件
|
|||
|
|
-- =============================================================================
|
|||
|
|
BEGIN;
|
|||
|
|
|
|||
|
|
INSERT INTO sys_element (menu_code, name, code, element_type)
|
|||
|
|
SELECT 'scrap_create', '报废扫码(查询库存)', 'scrap_selection', 'operation'
|
|||
|
|
WHERE NOT EXISTS (SELECT 1 FROM sys_element WHERE code = 'scrap_selection');
|
|||
|
|
|
|||
|
|
INSERT INTO sys_role_permission (role_code, target_code, type, company_name)
|
|||
|
|
SELECT DISTINCT sp.role_code, 'scrap_selection', 'element', sp.company_name
|
|||
|
|
FROM sys_role_permission sp
|
|||
|
|
WHERE sp.target_code = 'scrap_execute' AND sp.type = 'element'
|
|||
|
|
AND NOT EXISTS (
|
|||
|
|
SELECT 1 FROM sys_role_permission r
|
|||
|
|
WHERE r.role_code = sp.role_code AND r.target_code = 'scrap_selection'
|
|||
|
|
AND r.type = 'element' AND COALESCE(r.company_name,'') = COALESCE(sp.company_name,'')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
COMMIT;
|