角色
根据不同的用途,系统提供4种角色,分别是应用角色、业务角色、岗位角色和组织角色。
角色 | 设置和使用 | 用途 |
---|---|---|
应用角色 | 在应用(开发和运行)中设置和使用 | 作为应用对外提供的角色,可以直接分配给组织 |
业务角色 | 在企业门户应用中设置和使用 | 将每个应用提供的应用角色,合并成一个个业务角色,形成整个系统的角色,分配给组织 |
岗位角色 | 在企业门户应用中设置和使用 | 定义统一的岗位角色,在组织树上作为岗位使用,它们拥有统一的角色 |
组织角色 | 在企业门户应用中设置,通常在工作流中使用 | 设置不同的业务场景下,管理者和管理组织的关系; 提供 API 通过管理组织找到管理者,通过管理者找到管理组织 |
所有的角色都存储在企业门户应用的角色表 role 中,表结构见下表
角色 ID | 角色编码 | 角色名称 | 类型 | 状态 | 包含的角色编码 | 包含的角色名称 | 父节点 |
---|---|---|---|---|---|---|---|
xmjl | xmjl | 项目经理 | pos | 1 | wait_task | 待办任务 | 项目部 |
- 角色 ID、角色编码
- 必须唯一
- 类型
- 应用角色是 service、业务角色是 biz、岗位角色是 pos、组织角色是 org
- 状态
- 1 为可用,0为禁用
- 包含的角色
- 一个角色可以包含多个角色,一个角色的权限就是它所包含角色的权限的总和。注意不要形成 A 角色包含 B 角色,B 角色又包含 A 角色的嵌套关系
- 父节点
- 角色是树形数据,父节点只表示界面上的层级关系,不代表角色继承关系
角色之间的包含关系,如同业务角色包含应用角色的关系,如下图所示
业务角色包含应用角色,因此业务角色拥有所包含的应用角色的所有权限,例如:
业务角色 | 包含的应用角色 | 应用角色包含的权限 | 业务角色包含的权限 |
项目经理 | 信息发布_信息管理员角色 | 信息表 CRUD | 信息表 CRUD 查询部门员工的数据 |
销售订单_销售部门经理角色 | 查询部门员工的数据 | ||
公司领导 | 信息发布_信息管理员角色 | 信息表 CRUD | 信息表 CRUD 查询公司员工的数据 |
销售订单_公司领导角色 | 查询公司员工的数据 |
系统内置角色
为支撑平台的基础运行和门户使用,一些应用内置了角色,应用初始化时,写入到角色表中。
这些内置的角色在使用时不可编辑,可以直接授权给用户或者分配到业务角色、岗位角色中。这些角色如下表所示:
应用 | 角色标识 | 角色名称 | 说明 | 角色类型 |
---|---|---|---|---|
所有应用 | authc | 注册用户 | 登录用户具有的角色 | 应用角色 |
所有应用 | admin | 管理员 | 拥有所有权限的角色 | 应用角色 |
所有应用 | anonymous | 匿名用户 | 未登录时的角色 | 应用角色 |
企业门户 | wait_task | 待办任务 | 拥有任务中心、待办、已办、待阅、已阅的权限 | 应用角色 |
企业门户 | myself_agent | 本人委托代理 | 拥有委托代码设置的权限,分配给用户,用于委托自己 | 应用角色 |
企业门户 | other_agent | 他人委托代理 | 拥有委托代码设置的权限,分配给系统管理员,用于所有人的委托 | 应用角色 |
企业门户 | director | 主管 | 在组织管理中分配某个组织的主管,该主管拥有主管角色 | 组织角色 |
企业门户 | subadmin | 子管理员 | 在子管理员中,添加子管理员,该子管理员拥有子管理员角色 | 组织角色 |
企业门户 | org_user | 组织用户 | 添加根组织时,选中“分配组织用户角色”,系统会创建组织用户角色; 组织用户角色包含“待办任务”角色 |
业务角色 |
企业门户 | authorities | 用户类型 | 用户类型用作业务角色的父节点,在用户类型下添加的业务角色, 显示在“用户管理-用户详情”页面的“用户类型”下拉框中, 选择其中的某个角色,系统将该角色分配给用户,注意不是分配给人员成员 |
业务角色的父节点 |
企业门户 | process_user | 流程用户 | 拥有任务中心的权限 | 应用角色 |
企业门户 | process_admin | 流程管理员 | 拥有工作流管理中全部权限 | 应用角色 |
企业门户 | process_subadmin | 流程子管理员 | 拥有流程定制的权限 | 组织角色 |
企业门户 | infopub_admin | 信息发布管理员 | 拥有信息发布、信息查看的权限 | 应用角色 |
企业门户 | integrate | 系统集成 | 拥有组织同步使用的3个请求(获取组织快照、导入组织、导入简单组织)的权限 | 应用角色 |
企业门户 | opm_admin | 组织权限管理员 | 拥有组织用户管理和权限管理中全部权限 | 应用角色 |
企业门户 | portal_admin | 门户管理员 | 拥有功能树配置的权限 | 应用角色 |
企业门户 | system_org_config_admin | 系统配置管理员 | 拥有系统配置(除功能树配置)和第三方平台配置中全部权限 | 应用角色 |
企业门户 | ogn_config_admin | 机构配置管理员 | 拥有统一按组织配置_当前机构的权限 | 应用角色 |
企业门户 | druid_monitor | DruidMonitor | 拥有 druid 请求的权限 | 应用角色 |
消息中心 | message_admin | 消息管理员 | 拥有消息中心应用全部权限 | 应用角色 |
消息中心 | message_user | 消息用户 | 拥有消息中心、已读消息、未读消息的权限 | 应用角色 |
任务调度 | scheduling_admin | 任务调度管理员 | 拥有任务调度管理的权限 | 应用角色 |
事件中心 | eventing_admin | 事件中心管理员 | 拥有事件中心的权限 | 应用角色 |
应用角色
应用角色是平台内角色的最小单位,主要是在微服务内部使用。
应用角色的分类主要有系统内置的应用角色(如注册用户、匿名用户、管理员等)、开发者定义的应用角色和页面功能角色等。
定义应用角色
在开发时和运行时都支持定义应用角色。
- 在开发时定义应用角色:在服务元信息文件(serviceMetaInfo)中,定义应用角色。用于在企业门户中注册服务时,将应用角色注册到企业门户中
- 在运行时定义应用角色:使用企业门户中的“系统管理-权限管理-应用资源管理”,定义应用角色
在 IDE 中提供应用角色配置功能:页面设计区右上角的“设置-角色权限设置”,如下图所示
角色权限设置页面,如下图所示
- 上面显示服务元信息文件的路径,系统默认将应用角色存储到 UI2/pc/default.user.serviceMetaInfo.json 文件中,可添加其它服务元信息文件。“保存配置文件”用于将角色的修改保存到服务元信息文件中
- 下面显示已添加的应用角色列表
添加角色时,填写角色标识和名称。为了避免应用之间角色标识和角色名称重复,建议应用角色标识和角色名称均以应用名开头,如下图所示
服务元信息文件内容如下,roles 里面是定义的应用角色
{
"serviceInfo": {
"name": "{serviceName}",
"label": "{serviceLabel}"
},
"menu": {
"ext": {},
"types": [],
"color": "#3494F8",
"children": [],
"title": "{serviceLabel}",
"order": 0
},
"authorize": {
"permissions": [
{
"code": "*:/{serviceName}/mobileapp/mobile/org-auth/org.w:get",
"name": "组织",
"id": "_react_mobileapp_mobile_org-auth_org.w",
"type": "menu",
"title": "组织",
"url": "/react/mobileapp/mobile/org-auth/org.w"
}
],
"roles": [
{
"code": "react_admin",
"modifyDate": "2024/6/19 10:39:17",
"permissions": [
"*:/{serviceName}/mobileapp/mobile/org-auth/org.w:get"
],
"name": "react_管理员",
"id": "react_admin",
"modifyPerson": "zxh7"
}
]
}
}
IDE 提供“组织授权设置”,用于将开发时添加的应用角色,分配给组织,如下图所示
打开“组织授权设置”页面时,系统刷新服务元信息,将服务元信息中定义的应用角色存入企业门户应用的 role_debug 表,用于在“组织授权设置”页面中的全部角色中,显示开发时定义的应用角色
页面功能角色
每个页面都支持默认角色分配,说明见下表
场景 | 默认角色分配 | 使用 |
---|---|---|
所有人都能访问当前页面 | 全体成员(分配给注册用户角色) | 设置后所有人都可以访问页面 |
一个页面对应一个应用角色 | 特定部门(创建功能角色) | 角色已经创建,命名规则:应用名_页面名_功能角色; 在组织授权设置中,给组织分配角色; 有角色的组织可以访问页面 |
几个页面对应一个应用角色 | 无 | 在角色权限设置中,添加应用角色; 在组织授权设置中,给组织分配角色; 有角色的组织可以访问页面 |
打开某个页面,点击顶部工具栏中的“配置”按钮,显示功能配置对话框,如下图所示,默认角色分配说明见上表
业务角色
业务角色是对应用角色的组合,主要是在门户进行跨微服务使用。可以将多个应用角色组合成1个业务角色,方便后续角色的分配和使用,提高授权效率。
设置
由于业务角色是跨微服务使用的,因此业务角色不能在开发时设置,只能在运行时设置。
开发的应用需要先发布到运行时环境,并注册到门户中,再从门户的业务角色设置页面中对业务角色进行维护。如果应用不发布,在门户是看不到应用创建的应用角色的。
企业门户应用提供“系统管理-权限管理-业务角色管理”,用于添加业务角色,以及给业务角色分配应用角色。
数据
业务角色存储于企业门户应用的 role 表。业务角色包含的应用角色,存储到 parentrole_codes 和 parent_role_names 字段中,多个应用角色用逗号分割,如下图所示,业务角色“项目经理”,包含“销售订单销售部门经理角色”、“信息发布_信息管理员角色”这2个应用角色
岗位角色
岗位角色适用于集团的角色管理,集团中各子公司、各项目部组织架构相同,组织中各岗位权限相同的场景。
岗位角色
- 作为岗位:在组织树上显示为一个岗位
- 作为角色:和业务角色类似,是角色的组合(即可以包含业务角色、也可以包括应用角色)
设置
使用岗位角色的步骤如下
- 系统默认不使用岗位角色,在企业门户应用的“系统管理-系统配置-统一通用配置-组织配置”中开启“使用岗位角色”
- 在企业门户应用的“系统管理-权限管理-岗位角色管理”中添加岗位角色,并分配包含的应用角色和业务角色
- 在企业门户应用的“系统管理-组织用户管理-组织类型管理”中,设置每个组织类型包含的岗位角色
- 在企业门户应用的“系统管理-组织用户管理-用户管理”中,在用户信息详情页面中选择岗位角色
- 选择某个岗位角色后,系统自动在该组织下创建岗位,并给岗位分配岗位角色,同时分配人员到该岗位下
数据
岗位角色存储在 role 数据表中,示例数据见下表
角色 ID | 角色编码 | 角色名称 | 类型 |
---|---|---|---|
xmjl | xmjl | 项目经理 | pos |
岗位和岗位下的人员成员,存储在 orgs 数据表中,示例数据见下表
组织 ID | 用户 ID | 父组织 ID | 组织编码 | 组织名称 | 组织类型 |
---|---|---|---|---|---|
xmjl@15 | 15 | xmjl@15 | 项目经理 | pos | |
16@xmjl@15 | 16 | xmjl@15 | fangwen | 方雯 | psm |
授权数据存储在 authorize 数据表中,示例数据见下表
角色 ID | 授权主体 ID | 授权主体名称 | 授权主体全路径名称 |
---|---|---|---|
xmjl | xmjl@15 | 项目经理 | /阳光集团/北京公司/开发部/项目经理 |
从上面的数据可以看出
- 岗位的 ID :是由岗位角色 ID 和父组织 ID 组合形成的,规则为:岗位角色 ID @ 父组织 ID
- 人员成员的 ID :还是由人员 ID 和父组织ID组合形成的,由于岗位 ID 中带有 @,因此人员成员 ID 中就有两个 @
组织角色
系统提供组织角色管理,用于添加组织角色,在角色中添加管理者和管理组织,管理者通常是岗位或人员成员,管理组织通常是部门,如下图所示
系统内置了3个组织角色,分别是主管、子管理员和流程子管理员
- 主管:在“组织用户管理-组织管理”中分配主管时,自动维护组织角色数据,在“组织角色管理”中只显示,不能编辑
- 子管理员:在“组织用户管理-子管理员”中添加子管理员时,自动维护组织角色数据,在“组织角色管理”中只显示,不能编辑
- 流程子管理员:在“组织角色管理”中,添加管理者和管理组织,在“工作流管理-流程定制”中使用
设置
使用组织角色的步骤如下
- 在企业门户应用的“系统管理-权限管理-组织角色管理”中添加组织角色
- 给组织角色添加成员(即管理者),可以选择多个成员,成员通常选择岗位或人员成员
- 给成员添加他管理的组织,可以选择多个组织,管理组织通常选择部门
数据
组织角色存储在 role 数据表中,示例数据见下表
角色 ID | 角色编码 | 角色名称 | 类型 |
---|---|---|---|
rs | rs | 人事 | org |
授权数据存储在 authorize 数据表中,示例数据见下表
角色 ID | 授权主体 ID | 授权主体名称 | 授权主体全路径名称 |
---|---|---|---|
rs | 17@11 | 张三 | /阳光集团/北京公司/张三 |
rs | 8@9 | 李云 | /阳光集团/上海公司/李云 |
管理关系存储在 manage_orgs 数据表中,示例数据见下表
角色 ID | 管理者的组织 ID | 管理组织的组织 ID |
---|---|---|
rs | 17@11 | 北京公司 |
rs | 17@11 | 广州公司 |
rs | 8@9 | 上海公司 |
rs | 8@9 | 香港公司 |
rs | 8@9 | 伦敦公司 |
API
在企业门户应用中,提供4个 API 用于查询组织角色中的管理者和管理组织,API 定义如下图所示
参考《组织权限 API》