角色设计
资源角色设计器
如需新建资源角色,通过 Jmix 工具窗口 的菜单打开:

在对话框中输入角色名称和编码。

资源角色设计器的 Text 标签页集成了代码编辑器。可以直接编辑代码或通过设计器生成代码。
Definition 标签页定义角色的基本属性。

为用户分配角色时使用的是角色编码,因此,如果已经将角色分配给了某些用户,就不要修改角色编码了。 |
在 User Interface 标签页,可以定义菜单项和视图权限。

左侧的树显示主菜单的结构,包括项目定义的视图以及从框架和扩展组件继承的视图。All Views 组显示无法通过主菜单直接获取的所有其他应用程序视图。可以使用树上方的搜索控件查找需要的视图。
默认情况下,拒绝访问所有菜单项和视图。通过在左侧选择内容并选择面板右侧的 Allow,可以添加打开对应菜单和视图的许可。
使用树上方的工具栏展开或折叠节点。齿轮按钮用于切换展示未指定权限的视图和菜单项。
Allow all views 可以授予对所有视图的访问权限,如果只需要拒绝很少部分视图,也可以用这个选项操作。
在 Entities 标签页,可以为实体和实体属性定义 CRUD 权限。

面板左侧的表格显示项目中定义的实体以及从框架和扩展组件继承的实体。通过位于表上方的搜索控件,可以按名称筛选实体列表。
上方的工具栏包含下列操作:
-
Current project only - 切换展示继承的实体。
-
Assigned only - 切换展示无权限的实体。
所有实体操作都默认拒绝。使用表格中的复选框,可以为选中的实体赋予相应的操作权限。
右侧的表显示所选实体的属性权限。默认情况下,拒绝查看和修改所有实体属性。通过选中 View 和 Modify 复选框,可以为所选属性设置必要的访问级别。
属性表格中的通配符 [*] 选项可以将说有属性标记为 View 或 Modify,包括实体中目前不存在而将来会添加的属性。
勾选实体表格中 Allow all 复选框会允许全部的 CRUD 操作以及允许 Modify 所有属性,即将选中的实体所有权限都放开。
在 Specific 标签页,可以定义特定权限。

框架使用特定权限来限制对各种机制的访问。在树中,可以看到从框架和扩展组件继承的许可权限。
要添加权限,请使用树上方工具栏中的加号按钮。在 Resource 控件中,指定项目中定义的策略名称。请参阅 特定策略 部分,了解如何创建特定策略。
所有特定策略都默认拒绝访问。在树中选择策略然后通过右侧面板允许。
行级角色向导
如需创建一个新的行级角色,点击 Jmix 工具窗口 的 New → Row-level Role。

在弹出的窗口内填写角色参数。

为用户分配角色时使用的是角色编码,因此,如果已经将角色分配给了某些用户,就不要修改角色编码了。 |
Studio 会创建并打开一个带注解的角色接口。点击顶部操作面板的 Add Policy → JPQL Policy 可以添加 JPQL 策略:

在 Add JPQL Policy 对话框中,指定策略参数:

点击 OK。会在角色接口中添加一个定义该策略的方法。
类似的,如需添加 谓词策略,可以点击顶部操作面板的 Add Policy → Predicate Policy。然后在 Add Predicate Policy 弹窗中,指定一个实体并选择需要创建的谓词:
