소스 검색

docs(乐收赢): 记下进件页对租户的「放开条件 2」已被本批改动满足

`lsy-onboarding-menu.sql` 写了两条**任一成立**即可把进件页开给 role 2 的放开条件,
其中第 2 条是「把 `save` / `delete` 的权限从 `merchant:list` 换成写专用权限,
且该权限不授给 role 2(即:映射表由运营维护、租户只读)」。

本批 `5db0155b` 让这条成立了,而且比字面写法更彻底:`save` / `delete` 已不挂任何权限串,
改挂超管身份 `@perm.hasRole('SUPERUSER')`。身份门禁比「换一个不授出去的权限串」更强 ——
权限串本身是可再授给任意角色的,身份授不出去。⇒ 该文件 §理由 里那条攻击链的第一跳
(租户自己往 `pay_lsy_merchant` 写一行)今天走不通了。

**本次只记事实,不动授权**:是否让租户自助进件是**产品决定**,不是这次改动的推论;
本次用户裁定的方向恰恰是收紧(「租户不允许自己录入商户号」)。
文件里同时点明放开前要重新核对条件 1(`/commit` 的归属闸仍只证明「本租户内存在这一行」,
不由构造保证),以及 `merchant:list` 今天依然守着 `page`。
不照做的话,半年后有人看到「条件 2 已成立」就去放开,会漏掉其余前提。

改动是**纯注释**:无 SQL 语句变化,不涉及执行。
验证:`LeshouyingAdminWiringTest`(本仓唯一读菜单 SQL 的用例)7 条全绿;
行尾未变(本文件 LF-only,改前改后 `CR=0`,`git ls-files --eol` 仍 `w/lf`)。
alphaH 2 주 전
부모
커밋
bc5acba875
1개의 변경된 파일과 12개의 추가작업 그리고 0개의 파일을 삭제
  1. 12 0
      java/src/main/resources/db/lsy-onboarding-menu.sql

+ 12 - 0
java/src/main/resources/db/lsy-onboarding-menu.sql

@@ -128,6 +128,18 @@
 --   2. 把 `save` / `delete` 的权限从 `merchant:list` 换成写专用权限,且该权限**不授给 role 2**
 --      (即:映射表由运营维护、租户只读)。
 --
+--   ★★ 2026-09-30 追记:**条件 2 已经成立**,而且比字面写法更彻底 ——
+--      `save` / `delete` 已不再挂任何权限串,改挂**超管身份** `@perm.hasRole('SUPERUSER')`
+--      (提交 `5db0155b`,用户裁定「新增商户号是超管操作…租户不允许自己录入商户号」)。
+--      比「换一个不授给 role 2 的写专用权限串」更强:权限串本身是可再授给任意角色的,
+--      而身份门禁授不出去。⇒ 上面那条攻击链的**第一跳**(租户自己往映射表写一行)
+--      今天走不通了,「映射表由运营维护、租户只读」也成为字面事实。
+--   ⚠ **但本脚本没有据此改动**:是否把进件页开给 role 2 是**产品决定**
+--      (租户该不该自助进件),不是这次改动的推论;本次裁定的方向恰恰是收紧而非放开。
+--      真要放开,按上面那条 INSERT 单独跑,**不要重跑本脚本**。
+--      放开前请重新核对**条件 1**(`/commit` 的归属闸仍只证明「本租户内存在这一行」,
+--      不由构造保证),以及 `merchant:list` 今天依然同时守着 `page`(读)。
+--
 -- ★ 放开时**不要重跑本脚本**(页面行已存在 ⇒ `page` 为空 ⇒ 授权行也不会插,见下面「幂等」)。
 --   单独跑这一条即可:
 --     INSERT INTO sys_role_menus (role_id, menu_id)