|
@@ -0,0 +1,52 @@
|
|
|
|
|
+-- 1.0.386: 给 UAT_FUNCTION_USER 角色补 sysOrg:list 按钮权限。
|
|
|
|
|
+--
|
|
|
|
|
+-- 背景:
|
|
|
|
|
+-- JwtHandler.CheckAuthorzieAsync 将 /api/sysOrg/list 映射为权限名 sysOrg:list。
|
|
|
|
|
+-- 非 SuperAdmin 账号需命中「自有按钮权限」才放行;未命中时,只有该路由
|
|
|
|
|
+-- 未登记为按钮权限才兜底放行。sysOrg:list 已登记(SysMenu Id=1300200030201),
|
|
|
|
|
+-- 而 UAT_FUNCTION_USER 未授权 → 授权失败,接口返回 code=403
|
|
|
|
|
+-- 「403 禁止访问,没有权限」(Furion Return200StatusCodes 下 HTTP 仍为 200)。
|
|
|
|
|
+--
|
|
|
|
|
+-- S0 页面的公司/工厂下拉统一走 loadOrgList()(Web/src/views/aidop/s0/api/s0SalesApi.ts),
|
|
|
|
|
+-- 被 27 个 S0 页面共用,每页并发请求 Type=201(公司)与 Type=501(工厂)两次,
|
|
|
|
|
+-- 故表现为每个 S0 页面弹两个 403,随后下拉为空并提示「部分下拉数据加载失败」。
|
|
|
|
|
+-- 该角色为租户 UATTEST_CHL 全部 6 个账号的公共角色,影响面为该租户所有用户。
|
|
|
|
|
+--
|
|
|
|
|
+-- 最小授权:只补 sysOrg:list 这一条只读权限,不放开 sysOrg:add/update/delete,
|
|
|
|
|
+-- 也不放开 sysCache / sysConfig / sysFile 等平台管理类权限。
|
|
|
|
|
+--
|
|
|
|
|
+-- 生效前提:GetOwnBtnPermList 结果缓存 7 天(CacheConst.KeyUserButton + userId),
|
|
|
|
|
+-- 当前 CacheType=Memory,重启后端即失效重算。
|
|
|
|
|
+--
|
|
|
|
|
+-- 幂等:已授权则不重复插入;角色或菜单不存在的库上为空操作。
|
|
|
|
|
+
|
|
|
|
|
+DROP TEMPORARY TABLE IF EXISTS tmp_uat_org_list_rm;
|
|
|
|
|
+CREATE TEMPORARY TABLE tmp_uat_org_list_rm (
|
|
|
|
|
+ seq INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
|
|
|
+ role_id BIGINT NOT NULL,
|
|
|
|
|
+ menu_id BIGINT NOT NULL
|
|
|
|
|
+);
|
|
|
|
|
+
|
|
|
|
|
+INSERT INTO tmp_uat_org_list_rm (role_id, menu_id)
|
|
|
|
|
+SELECT r.Id, m.Id
|
|
|
|
|
+FROM SysRole r
|
|
|
|
|
+JOIN SysMenu m
|
|
|
|
|
+ ON m.Type = 3
|
|
|
|
|
+ AND m.Permission = 'sysOrg:list'
|
|
|
|
|
+ AND m.Status = 1
|
|
|
|
|
+WHERE r.Code = 'UAT_FUNCTION_USER'
|
|
|
|
|
+ AND r.Status = 1
|
|
|
|
|
+ AND EXISTS (
|
|
|
|
|
+ SELECT 1 FROM SysTenantMenu t WHERE t.TenantId = r.TenantId AND t.MenuId = m.Id
|
|
|
|
|
+ )
|
|
|
|
|
+ AND NOT EXISTS (
|
|
|
|
|
+ SELECT 1 FROM SysRoleMenu x WHERE x.RoleId = r.Id AND x.MenuId = m.Id
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+SET @uat_org_list_rm_base := (SELECT IFNULL(MAX(Id), 0) FROM SysRoleMenu);
|
|
|
|
|
+
|
|
|
|
|
+INSERT INTO SysRoleMenu (Id, RoleId, MenuId)
|
|
|
|
|
+SELECT @uat_org_list_rm_base + s.seq, s.role_id, s.menu_id
|
|
|
|
|
+FROM tmp_uat_org_list_rm s;
|
|
|
|
|
+
|
|
|
|
|
+DROP TEMPORARY TABLE IF EXISTS tmp_uat_org_list_rm;
|