6b7b174e3d5c26e87f9933309293a245b87a559b
根因(比上一轮报告的更深一层)
----
field_permissions.py 的读过滤要求两个权限码:
material_list:productImageRemark / material_list:manualLinkRemark
而这两个码**在 sys_element 里根本不存在**,也从未授予任何角色 —— 是「幽灵权限」。
除 SUPER_ADMIN(走 material_list:* 通配符绕过)外,没有任何人能通过读过滤。
配合写侧的「不在映射中 → 默认允许」兜底,形成:
谁都能写、除超管没人能读 —— 填了存进去了,回显却被抹成 null,
看起来就是「保存不了」。
本次改动
----
一、读侧:注册这两个元素,授予与 material_list:files **完全相同的 6 个角色**
(INBOUND / OUTBOUND / SALES / SUPERVISOR / WAREHOUSE_MGR / SUPER_ADMIN)
依据:备注依附于图片,「能看图的人就应该能看备注」。
二、写侧:新建 material_list:remark_edit,只授予 3 个核心管理角色
(SUPER_ADMIN / SUPERVISOR / WAREHOUSE_MGR)。
★ 为何不复用 material_list:operation:它授予了 5 个角色(含 INBOUND /
OUTBOUND),比业务要求的 3 个更宽,达不到「只有核心管理角色可改」。
⚠ 该码只做精确匹配,**切勿用 @permission_required 包裹** ——
_expand_operation_perms 会前缀桥接,把 material_list:operation 的持有者
一并放行,等于把刚收紧的口子又捅开。已在迁移与代码注释中双处警示。
幂等,可重复执行;脚本文本不含 psql 元命令,DataGrip 可直接整段执行。
Description
No description provided
Languages
Python
70.2%
CSS
14.9%
Vue
7.6%
HTML
4.2%
TypeScript
3.1%