引言
数据权限通常与业务实时联动,以 CRM 场景为例:
- 商机流转:公海池全员可见,转入个人归属后自动转为仅个人可见;
- 合同审批:审批通过后锁定编辑权限,驳回后仅发起人可修改。
这种动态的权限控制机制,是构建安全、灵活业务系统的核心要素。本文将通过“合同审批”为例,解析动态权限的配置逻辑。
如果您对权限的基础功能还不熟悉,可以先阅读:帮助中心 - 玩转表格 / 设置权限
场景简介
现有一张合同表,用于记录合同信息及审批结果,需要根据审批状态自动控制合同数据的权限:
- 功能 1 - 创建合同:普通用户可新建并填写合同;
- 功能 2 - 锁定合同:审批中/通过后自动锁定,禁止修改;
- 功能 3 - 驳回修正:仅流程发起人可编辑指定字段。
效果如图:
实现如图效果的核心思路:通过将一个角色组同时放在多个权限组,最终取权限的并集这一特性来实现。在此场景中,我们需要两个权限组搭配实现:
- 【权限组 1 】:允许普通用户创建数据但不允许修改数据 —— 实现功能 1 & 2
- 【权限组 2 】:驳回时允许发起人修改指定字段 —— 实现功能 3
配置步骤
步骤 1 :实现创建合同、锁定合同 - 允许普通用户创建数据但不允许修改数据
①创建权限组名称:待审批、已通过、已撤销权限;
②设置权限:自定义权限;
③可对数据做哪些操作:设置只能对数据做”查看“、”创建“操作;
④需要限制的字段:取消合同流程状态的创建权限(避免因用户误操作,导致流程状态不准确);
⑤可查看到哪些数据:包含当前用户的创建人。
步骤 2 :实现驳回修正 - 驳回时允许发起人修改指定字段
①创建权限组名称:已驳回权限;
②设置权限:每人只能管理自己的数据;
③可对数据做哪些操作:设置只能对数据做”查看“、”修改“、”单字段修改”、“批量编辑”操作;
④需要限制的字段:取消合同流程状态、合同名称的修改权限;
⑤可查看到哪些数据:设置合同流程状态已驳回状态时,是可查看的数据。
步骤3:完善权限配置 - 设置默认权限组,添加角色组
①设置两个权限组都为默认权限组,新加入的角色才会自动加入多个权限组,才能实现动态权限;
②创建普通成员角色组,将成员添加至角色组中。
参考模版:动态权限-以合同审批为例
注意:
- 本文阐述的是表格的动态权限配置逻辑,流程的权限可参考 帮助中心 - 业务流程/设置人工任务,如何通过触发器在表单中更新流程状态,可以参考模版中触发器或流程专题课程的第 05 课“在流程中调用工作流”。
- 应尽量规避不同权限组出现相同的配置,防止因权限叠加导致的冲突覆盖等潜在问题。