用途:为 Frappe Tweaks 的 AC Rule 权限系统提供专家级指导,帮助创建、实施与排查基于规则的访问控制。该系统在 Frappe 内建权限基础上扩展记录级细粒度控制。
主要能力:支持记录级而非仅 DocType 级的访问控制;可用 SQL、Python 或 JSON 过滤器做动态过滤;采用 Permit/Forbid 语义;按主体(用户、角色、用户组或自定义逻辑)、资源(DocType、报表或自定义)与动作(read、write、delete 等)定义规则。核心 DocType 包括 AC Rule、Query Filter、AC Resource、AC Action。规则求值顺序为:规则映射生成、主体解析、资源解析、SQL 生成,最终逻辑为 (Permit1 OR Permit2 OR ...) AND NOT (Forbid1 OR Forbid2 OR ...)。
使用方式:DocType 与 Workflow 集成自动生效,无需代码,通过 Frappe 权限与工作流钩子执行;报表集成需手动调用 get_resource_filter_query,例如 from tweaks.tweaks.doctype.ac_rule.ac_rule_utils import get_resource_filter_query,再用返回的 query 注入 SQL。
适用场景:销售团队按管辖客户限制报表、限制归档记录、租户级多租户隔离、按部门访问并设例外、复杂 SQL 子查询过滤、组合多个 Permit 规则等。
限制与注意:报表需手动集成;旧系统(Event Scripts、Server Script Permission Policy)正被弃用;调试报告需 System Manager 角色;SQL 过滤须转义用户输入;复杂规则需关注性能。缺失的收费、价格与平台信息暂未提供。