SuperAPI AI 工具集

frappe-errors-permissions

编程与开发

查看项目

更新于 10-15 22:17

技能介绍

用途:在 Frappe/ERPNext 中调试与处理权限相关错误,避免权限钩子异常导致文档访问整体中断。覆盖 PermissionError、单文档访问、列表视图无记录、API 403、Guest 访问、User Permission、perm_level 与共享权限等问题。

主要能力:提供“错误信息→原因→修复”的快速诊断表、定位错误的决策树,以及 has_permission 与 permission_query_conditions 钩子的正确写法。文档强调 has_permission 只能返回 False(拒绝)或 None(交给标准系统),绝不能抛错或返回 True;permission_query_conditions 必须返回字符串,使用 frappe.db.escape() 防注入,异常时返回限制性条件,且仅影响 get_list,不影响 get_all。

必要用法:调试时可用 get_doc_permissions(doc, user) 查看有效权限,用 frappe.has_permission(..., throw=False) 检查单项权限,用 frappe.get_all("User Permission", filters={"user": user}) 查看用户权限,用 frappe.get_roles(user) 列出角色。共享示例:frappe.share.add("Sales Order", "SO-001", "john@example.com", read=1, write=1, share=1)。Guest 端点需 @frappe.whitelist(allow_guest=True) 并校验输入。

适用场景:权限报错排查、列表数据被过滤、字段因 perm_level 不可见、共享不生效、System Manager 被自定义钩子拦截等。

限制与注意:共享只补充角色权限,不能替代基础角色;ignore_permissions 必须在保存或插入前设置;自定义钩子应先检查 Administrator 与 System Manager;禁止给 Guest 授予写或删除权限。参考资料文件 references/patterns.md、references/examples.md、references/anti-patterns.md 的具体内容暂未提供。