SuperAPI AI 工具集

frappe-tweaks-ac-rules-expert

安全与审计

查看项目

更新于 10-15 23:44

技能介绍

用途:为 Frappe Tweaks 的 AC Rule 系统提供专家指导。该系统在 Frappe 内置权限之上扩展出细粒度、基于规则的访问控制,可按记录级而非仅 DocType 级控制访问。

主要能力:支持 SQL、Python 或 JSON 过滤器做动态过滤;用 Permit/Forbid 语义定义复杂规则;按主体(用户、角色、用户组或自定义逻辑)定义谁有权限,按资源(DocType、报表或自定义资源)定义被访问对象,按动作(read、write、delete 等)控制具体操作。

组件:核心由四个 DocType 组成——AC Rule(定义 Permit/Forbid 规则)、Query Filter(可复用过滤器)、AC Resource(定义被访问的 DocType 或 Report)、AC Action(定义可控制动作)。规则评估流程为:生成规则映射、解析主体、解析资源、生成 SQL,最终逻辑为 (Permit1 OR Permit2 ...) AND NOT (Forbid1 OR Forbid2 ...)。

使用方式:创建 Query Filter 定义主体或资源,创建 AC Resource 定义受控的 DocType 或 Report,再创建 AC Rule 关联主体、资源与动作。DocType 与工作流集成是自动的,通过 Frappe 权限与工作流钩子生效,无需代码。报表集成需手动调用 get_resource_filter_query(report="Your Report", action="read"),判断 access 是否为 none,并把返回的 query 注入 SQL 查询。

适用场景:销售团队访问控制、限制归档记录、基于租户的多租户隔离、基于部门的访问及例外、复杂 SQL 过滤器、多 Permit 规则组合等。

限制与注意:报表集成必须手动完成;已弃用系统(Event Scripts、Server Script Permission Policy)正在逐步淘汰;调试与审计报表需要 System Manager 角色。排错常见方向包括规则未生效(检查启用状态、日期范围、主体/资源匹配)、过滤不正确、性能问题(简化查询、合并规则、加索引)、访问被拒(检查 Forbid 规则)。建议在 SQL 过滤器中转义用户输入,用不同角色与边界情况测试,并记录规则逻辑。源码位置位于 tweaks/tweaks/doctype/ac_rule/ 等目录。