6.3.1. 配置角色

建议按以下方式配置角色权限许可

  1. 创建一个 Default - 默认 角色,这个角色禁止所有系统权限。最简单的方法是创建一个 Denying - 拒绝 类型的角色。然后为其勾选 Default role 默认复选框,这样所有新用户都默认带有该角色。

  2. 为各类用户类别创建一系列允许特定权限的角色,有两种策略:

    • 粗放化(Coarse-grained)角色 – 每个角色中都配置上某类用户责任范畴所需的所有权限,例如 Sales Manager 销售经理,Accountant 会计。这样的话,除了 Default 默认角色,每个用户只分配一个角色。

    • 精细化(Fine-grained)角色 – 每个角色都配置为可以操作某类功能。例如 Task Creator 任务创建,References Editor 引用编辑。这样的话,每个用户基于他的责任范畴会分配到多个角色。

    两种策略也可以组合使用。为不同的用户类别创建一系列角色来分配权限。

  3. 系统管理员可能会不需要分配任何角色,他们拥有所有系统对象的所有权限。也可以为其分配一个 Super 类型的角色,覆盖所有其它角色指定的限制。

管理功能访问权限

需要给 Denying - 拒绝 角色提供访问管理功能的时候,需要放开一些权限,以下是快速参考。比如,只开放实体日志功能,在相应部分设置提到的权限。

推荐至少提供 sys$FileDescriptor 实体的只读权限,因为这个实体在平台很多地方都会用到:邮件、附件、日志等。

下面提到的权限可以通过相应标签页的 Role 编辑窗口进行配置:Entity - 实体, Screen - 界面 或者 Specific - 特殊功能

另外,可以通过 cuba.defaultPermissionValuesConfig 应用程序属性配置系统实体的默认访问权限。

Users - 用户

User 实体可以在数据模型中用来做关联引用实体。需要在查询组件或者下拉框组件使用用户实体,只需要设置 sec$User 实体的权限就足够。

如果需要使用 Denying - 拒绝 角色创建或者编辑 User 实体,还需要设置以下权限:

  • 实体: sec$User, sec$Group; (可选) sec$Role, sec$UserRole, sec$UserSubstitution.

读取 sec$UserSubstitution 实体的权限对代替用户功能是至关重要的。

  • 界面: Users 菜单项, sec$User.edit, sec$Group.lookup; (可选) sec$Group.edit, sec$Role.edit, sec$Role.lookup, sec$User.changePassword, sec$User.copySettings, sec$User.newPasswords, sec$User.resetPasswords, sec$UserSubstitution.edit.

Access Groups - 访问组

创建或者管理用户访问组以及安全限制。

  • 实体: sec$Group, sec$Constraint, sec$SessionAttribute, sec$LocalizedConstraintMessage.

  • 界面: Access Groups 菜单项, sec$Group.lookup, sec$Group.edit, sec$Constraint.edit, sec$SessionAttribute.edit, sec$LocalizedConstraintMessage.edit.

Dynamic Attributes - 动态属性

访问额外的实体非持久化属性

  • 实体: sys$Category, sys$CategoryAttribute, 以及数据模型需要的其它实体。

  • 界面: Dynamic Attributes 菜单项, sys$Category.edit, sys$CategoryAttribute.edit, dynamicAttributesConditionEditor, dynamicAttributesConditionFrame.

User Sessions - 用户会话

查看用户会话数据。

  • 实体: sec$User, sec$UserSessionEntity.

  • 界面: User Sessions 菜单项, sessionMessageWindow.

Locks - 锁

设置实体的悲观锁

  • 实体: sys$LockInfo, sys$LockDescriptor, 以及数据模型需要的其它实体。

  • 界面: Locks 菜单项, sys$LockDescriptor.edit.

External Files - 外部文件

访问应用的文件存储

  • 实体: sys$FileDescriptor.

  • 界面: External Files 菜单项; (可选) sys$FileDescriptor.edit.

Scheduled Tasks - 定时任务

创建和管理定时任务

  • 实体: sys$ScheduledTask, sys$ScheduledExecution.

  • 界面: Scheduled Tasks 菜单项, sys$ScheduledExecution.browse, sys$ScheduledTask.edit.

Entity Inspector - 实体探查

实体探查动态生成的界面中操作应用对象实体。

  • 实体: 数据模型需要的实体。

  • 界面: Entity Inspector 菜单项, entityInspector.edit, 以及数据模型需要的其它实体。

Entity Log - 实体日志

实体监听器级别记录实体持久化操作。

  • 实体: sec$EntityLog, sec$User, sec$EntityLogAttr, sec$LoggedAttribute, sec$LoggedEntity, 以及数据模型需要的其它实体。

  • 界面: Entity Log 菜单项.

User Session Log - 用户会话日志

查看用户登入登出或者用户会话的历史数据。

  • 实体: sec$SessionLogEntry.

  • 界面: User Session Log 菜单项.

Email History - 邮件历史

查看从应用发出的电子邮件

  • 实体: sys$SendingMessage, sys$SendingAttachment, sys$FileDescriptor (邮件附件需要).

  • 界面: Email History 菜单项, sys$SendingMessage.attachments.

Server Log - 服务器日志

查看并下载应用的日志文件

  • 实体: sys$FileDescriptor.

  • 界面: Server Log 菜单项, serverLogDownloadOptionsDialog.

  • 特殊功能: 下载日志文件

Screen Profiler - 界面资料

应用界面的使用量和使用时间的统计数据。

  • 实体: sec$User, sys$ScreenProfilerEvent.

  • 界面: Screen Profiler 菜单项.

Reports - 报表

需要运行报表,参考 报表生成器 插件。

  • 实体: report$Report, report$ReportInputParameter, report$ReportGroup.

  • 界面: report$inputParameters, commonLookup, report$Report.run, report$showChart (如果包含图表模板)。