权限级别(Perm Level),是 ERPNext 和 Frappe 中的字段级权限系统。它允许管理员控制 DocType 中敏感字段的访问权限,而无需隐藏或限制整个文档。
权限级别控制什么
DocType 中的每个字段都有一个权限级别。默认情况下,字段的权限级别为0。级别为 0 的字段受 DocType 的常规权限控制。
当字段被分配了更高的权限级别,例如1或2时,用户需要在角色权限管理器中拥有该级别的匹配权限行。如果没有匹配的权限,用户可能仍然可以打开文档,但根据配置的权限,高级别字段可能被隐藏或设为只读。
权限级别的用途
当大多数用户需要处理文档,但只有部分用户应查看或编辑敏感信息时,权限级别非常有用。这避免了为保护少数几个字段而创建单独的 DocType 或自定义工作流。
- 销售: 销售用户可以创建报价单,而只有经理可以编辑折扣审批字段。
- 人力资源: 人力资源用户可以查看员工记录,而薪资详情仅对薪资角色可用。
- 财务: 用户可以查看供应商发票,而银行或税务相关字段仅限于财务经理访问。
- 支持: 支持用户可以更新工单详情,而内部升级备注仅对高级用户可见。
权限级别如何工作
- 在 DocType 或自定义表单中为字段分配一个权限级别。
- 使用角色权限管理器定义每个角色在每个权限级别可以执行的操作。
- 当用户打开文档时,ERPNext 会检查用户的角色以及每个字段的权限级别。
- 如果用户拥有该字段权限级别的权限,则根据允许的操作(如读取或写入)提供该字段。
- 如果用户没有该权限级别的权限,即使该用户可以访问文档本身,该字段也会受到限制。
示例
假设一个销售订单包含以下字段:
- 客户 权限级别为 0
- 项目 权限级别为 0
- 交货日期 权限级别为 0
- 已批准折扣 权限级别为 1
- 管理层备注 权限级别为 2
仅拥有级别 0 权限的销售用户可以使用常规的销售订单字段。拥有级别 1 权限的销售经理还可以读取或更新“已批准折扣”字段。拥有级别 2 权限的销售总监也可以访问“管理层备注”。
权限级别与角色权限管理器
只有当权限级别与角色权限配对时,它们才变得有用。在角色权限管理器中,每个权限行都有一个级别值。该值必须与字段的权限级别匹配。
例如,如果某个字段设置为权限级别 1,则该角色需要在该 DocType 上拥有级别 1 的权限行。然后,该行可以根据 DocType 和业务需求允许执行读取、写入、创建、提交、取消或修改等操作。
良好实践
- 将大多数字段保持在权限级别 0。
- 仅对确实需要额外控制的字段使用更高的权限级别。
- 使用清晰的字段标签,以便在配置期间轻松识别受限制的字段。
- 在依赖设置之前,使用非管理员用户测试权限。
- 避免创建过多级别,因为权限规则可能难以审计。
- 记录每个受限制字段被分配更高权限级别的原因。
常见错误
- 将字段设置为级别 1,但未添加级别 1 的角色权限: 用户可能会意外失去对该字段的访问权限。
- 认为文档访问权限意味着字段访问权限: 用户可以访问文档,但仍可能无法访问更高级别的字段。
- 使用权限级别代替工作流审批: 权限级别控制字段访问。它们不能替代需要业务流程控制时的审批工作流。
- 仅以管理员身份测试: 管理员访问权限可能隐藏权限问题。始终使用目标角色进行测试。
相关主题
- 用户与权限
- 角色权限管理器
- DocType 权限
- 自定义表单