权限系统由 权限角色权限规则 组成,系统为不同角色设置了不同的规则,并规定一个用户只能有一种角色,系统通过这种方式管理用户的权限。

角色包含 管理员、经理、艺术家、客户、外包方;

规则包含 查看、创建、更新、删除、访问;

权限系统用于判断用户是否有权操作 实体类型字段页面功能菜单项 这四类数据,类型、角色、规则的关系如下表所示:

类型 \ 角色 管理员 经理 艺术家 客户 外包方
实体类型

查看

创建

更新

删除

查看

创建

更新

删除

查看

创建

更新

 

查看

 

 

 

查看

创建

 

 

字段

查看

更新

查看

更新

查看

更新

查看

更新

查看

更新

页面

查看

更新

删除

查看

更新

删除

查看

 

 

查看

 

 

查看

 

 

功能菜单项 调用 调用 调用 调用 调用

用户创建实体类型、字段、页面、功能菜单项时,系统会自动生成对应规则,用户无需手动创建角色或规则。

要查看自动生成的规则,可以点击 用户菜单 – 页面 – 跳转指定页面 菜单项,然后搜索 权限规则 (PermissionRule)进入该页面查看。下面提供一种更简单的管理用户权限的方法。

点击 用户菜单 – 全局设置 – 权限设置,打开权限设置界面如下图所示:

permission setting page

界面中四个标签页对应四种类型,每个标签页下的规则以列表的形式排列,点击一个折叠的列表元素,即可查看对应的规则。

一、实体类型标签页可以查看角色是否有权操作某种类型的实体。以 版本 权限为例:

Version Permission Rules

管理员、经理拥有全部权限,艺术家拥有删除以外的权限,客户只能查看,合作方只能查看和创建。

取消勾选某角色下的 更新 规则然后保存,就能禁止该角色编辑 版本 的全部字段。

二、如果需要禁止角色编辑版本的某一个字段,可以进入 字段标签页。以版本的 版本代号 字段为例:

Version Code Permissions
取消勾选 客户权限 下方的 更新版本代号,就相当于禁止客户角色编辑版本代号字段。
在用户编辑版本代号字段时,系统会依次判断用户角色是否有编辑 版本实体类型 权限和编辑 版本代号字段 权限,全部满足才允许编辑。

请在充分了解某字段的功能和使用场景后再决定是否关闭字段权限,避免错误操作影响使用体验。比如关闭 用户 (HumanUser)的 语言 (language)字段的更新规则会导致相应角色无法切换语言。

此外,字段自身还有 Read Only、Create Only 等属性,这些属性为真时也会禁止查看、更新该字段。在说 “不” 时,字段属性高于权限规则。

如果需要禁止艺术家在权限设置页面修改权限,可以在实体类型标签页下找到 权限角色,取消 艺术家 下方的 更新 勾选项。

三、页面标签页显示系统中全部页面的权限,点击展开按钮即可查看对应页面的权限规则。

页面权限标签页提供了三类规则:查看、更新、删除。这三类规则是针对单个页面实体的,与实体类型、字段标签页中的权限作用机制不同。

用户在打开页面,修改页面名称,保存页面设置时都需要判断页面权限。

四、功能菜单项标签页显示系统中全部功能菜单项的权限。

功能菜单项权限仅在用户使用功能菜单项时生效。想要禁止某角色使用某功能菜单项,关闭其访问权限即可。

 

最后:

考虑用户在不同项目可能承担不同的角色,权限系统提供了 权限角色变更 用于提权。用户可以在权限角色变更页面中创建实体,在表单中填写用户、项目和权限角色,为指定的用户在指定的项目设置一个优先级更高的权限角色。

权限系统允许为群组分配权限角色,群组中的用户都会受此影响。

系统还提供了一个权限扩展方案(开发中):设置权限角色的 基础权限角色(base_role)字段后,权限角色会继承基础权限角色的规则。用户可以创建一个新的权限角色,设置基础权限角色为管理员、经理、艺术家、客户、第三方中的一个,再添加一些额外规则,这种方式也受权限系统支持。

在可配置的权限系统之外,还有一些临时的特殊权限,比如我们在程序中禁止创建、修改、删除 InBoxType 和 InBox,这类特殊权限我们会视情况逐步移除。