1. 快速向导
  2. 权限

总体设计

通过记录过滤的相关规则,控制用户可以查询的记录范围。再叠加字段权限,控制用户对具体字段的操作权限。当用户同时属于多个权限集时,最终权限为叠加之后的结果。

简档/权限集

权限不直接绑定到用户,而是绑定到简档/权限集。

每个用户必须属于一个简档,且只能属于一个简档。每个用户可以属于多个权限集。

用户的最终权限 = 简档权限 + 所有权限集权限。因此,通常简档上赋予用户的是最小权限,并通过叠加相应的权限集扩展用户的权限。

内置简档

  • admin 管理员
  • user 用户
  • customer 客户
  • supplier 供应商

内置权限集

  • organization_admin 分部管理员
  • workflow_admin 流程管理员

自定义简档/权限集

当内置简档不够用时,可以在软件包中自定义简档/权限集。并设定好对应的权限。项目实施时,只需要为简档/权限集设置具体的人员就可以。

  • 定义简档类型元数据(.profile.yml),增加自定义简档。
  • 定义权限集类型元数据(.permissionset.yml),增加自定义权限集。

记录查看权限

记录查看权限用于控制用户授权查看的记录清单。最终会转换成一组过滤条件,在 记录服务 中自动叠加成为数据库的查询条件。

查看我的记录

对象中的每一条记录都默认有一个 owner 字段,代表记录所有者。当用户拥有指定对象 允许查看 权限时,表示用户可以访问指定对象中,所有 owner = ${currentUserId} 的记录。

查看分部记录

对象中的每一条记录都默认有一个 company_id、company_ids 字段,代表记录所属分部(记录属于多个分部时,company_id 记录 owner 所属的主分部)。

当用户拥有指定对象 查看所属分部查看指定分部 权限时,表示用户可以访问指定对象中,所有 company_id、company_ids = ${authorizedCompanyIds} 的记录。

查看所有记录

当用户拥有指定对象 查看所有记录 权限时,表示用户可以访问指定对象中的所有记录。

共享规则

共享规则是一个过滤条件,满足此过滤条件的记录,用户始终可以查看。

限制规则

限制规则是一个过滤条件,满足此过滤条件的记录,用户始终禁止查看。

基于角色树的权限继承

可以为对象启用基于角色树的权限继承功能。启用后,角色树上级节点自动获得所有下级节点的记录查看权限。

beforeFind 触发器

如果以上规则不能满足需求,可以通过定义 beforeFind 触发器,叠加规则来处理。

记录修改权限

记录修改权限用于控制用户对于具体记录的修改权限。用户首先必须拥有相应记录的查看权限,才能进一步进行修改。

修改所有记录

当用户拥有指定对象 修改所有记录 权限时,表示用户所有可查看的记录都能修改。

修改分部记录

当用户拥有指定对象 修改所属分部修改指定分部 权限时,表示用户可以修改相应分部中,所有可查看记录。

修改我的记录

当用户只拥有对象上的修改删除权限时,表示用户只能修改自己的记录,也就是owner = ${currentUserId}的记录。

记录新增权限

记录新增权限用于控制用户是否可以为对象新增记录,以及如何设定记录的 所有者(owner)字段。

新增我的记录

当用户只拥有对象上的新增权限时,表示用户可以新增记录,并且设置owner = ${currentUserId}

为他人新增记录

  • 当用户只拥有对象上的新增权限,且拥有 修改所属分部修改指定分部 权限时,表示用户可以新增记录,并且设置 owner = 指定分部中的某个用户。
  • 当用户只拥有对象上的新增权限,且拥有 修改所有记录 权限时,表示用户可以新增记录,并且设置 owner = 任何用户。

字段级权限

可以更精确的指定,用户对具体字段的操作权限。包括是否可见,是否可修改。

参考