class Role extends Object
角色
| Modifiers | Name | Description |
|---|---|---|
static class |
Role.Granted |
角色鉴权的结果 |
| Modifiers | Name | Description |
|---|---|---|
static Integer |
CONTROL_CODEFIXED |
|
static Integer |
CONTROL_DEFAULT |
|
static Integer |
CONTROL_DELETABLE |
|
static Integer |
CONTROL_EDITABLE |
|
static Integer |
CONTROL_NONE |
|
static String |
ROLE_SYS_ADMIN |
|
static String |
ROLE_SYS_DOMAIN_ADMIN |
|
static String |
ROLE_SYS_SWITCH_USER |
|
static String |
ROLE_SYS_USER |
|
static String |
ROLE_SYS_USER_LIMITED |
|
static String |
TYPE_POS |
|
static String |
TYPE_SYS |
| Type | Name and description |
|---|---|
Boolean |
allGranted是否授权给所有人 |
DomainApplication |
application所属应用 |
Boolean |
builtin是否系统内置的角色 |
String |
code代码 |
static Object |
constraints |
Integer |
control控制字段 |
String |
createdBy |
Date |
dateCreated时间戳... |
Boolean |
disabled是否禁用 |
Domain |
domain所属域 |
Set<RoleEntity> |
entities角色与各种实体的关联 |
String |
ext1扩展属性 |
String |
ext2 |
String |
group分组名称 |
static Object |
hasMany |
Date |
lastUpdated |
Integer |
level级别 |
static Map |
listFields |
static Object |
mapping |
String |
name名称 |
String |
notes备注 |
Organization |
organization所属机构 |
Integer |
sequence排序号 |
static Object |
transients |
String |
type角色类型 |
String |
updatedBy |
| Type | Name and description |
|---|---|
Object |
afterUpdate() |
Object |
beforeDelete() |
Object |
beforeValidate() |
static Role |
createIfNotExists(Map props, List entities = null, List entitiesExclude = null)如果角色不存在,则创建角色 |
static String |
getCode(String code)格式化角色代码:trim、转成大写、加上前缀ROL_ |
String |
getFullName(Boolean withCode = true)角色全名,格式为:域/应用/名称 (代码) |
static Map<Long, List<Map>> |
getGrantedUserMaps(Collection<Long> roleIds)获得角色关联(不含授权给所有人的角色)的用户基本信息 |
Map<String, Object> |
getHandoverLogs(Map params)获得系统角色的移交日志 |
static List<Long> |
getPermissionIds(Long roleId, Class<Permission> permClass = null)获得角色关联的权限 ID 列表 |
static Map<Long, List<Long>> |
getPermissionIds(Collection<Long> roleIds, Class<Permission> permClass = null)获得角色关联的权限 ID 列表 |
List<Map> |
getUserMaps()获得直接关联的用户基本信息列表 |
static List<Map> |
getUserMaps(Long roleId) |
List<User> |
getUsers()获得直接关联的用户列表 |
static List<User> |
getUsers(Long roleId) |
boolean |
isCodeFixed()角色代码、所属域/应用等属性是否可以被修改 |
boolean |
isDeletable()角色是否可删除 |
boolean |
isEditable()角色是否允许编辑 |
boolean |
isReadonly()角色是否是只读的,一般是一些自动维护的角色 |
Role |
linkEntities(List entities, Boolean excluded = false)关联授权实体 |
Object |
onDelete() |
String |
toString() |
| Methods inherited from class | Name |
|---|---|
class Object |
Object#wait(long, int), Object#wait(long), Object#wait(), Object#equals(Object), Object#toString(), Object#hashCode(), Object#getClass(), Object#notify(), Object#notifyAll() |
是否授权给所有人
所属应用
是否系统内置的角色
代码
所属域和应用下的唯一标识
控制字段
时间戳...
是否禁用
所属域
角色与各种实体的关联
扩展属性
分组名称
级别
名称
备注
所属机构
一般为空,仅在某些特殊场景下才使用,比如下面的需求:
HR系统中存在多种数据(如员工、合同...),每种数据都采用不同的方式和所属公司关联,并且每种数据的各种操作都设置了权限,
要实现分级管理,即不同的用户(岗位)管理不同公司下的数据。
此时可以创建多个类似的角色(当然code不能相同),并将角色与公司关联,同时关联相关的权限、与用户(或包含用户的岗位);
在各数据控制器的鉴权闭包中,通过参数 ((Permission.Granted) granted).grantedRoles 获得操作鉴权成功的角色及所属机构ID,
进一步对内容进行鉴权(包括拼接 list 操作中的条件)。
排序号
角色类型
除系统 SYS、岗位 POS 外,可自定义,如业务流程 BPM、项目 PRJ 等。
如果角色不存在,则创建角色
props - 角色属性,如 [type:"xxx", code:"xxx", name:"xxx", group:"xxx", builtin: "xxx", permissions: ["code1", ...]],
这里的 permissions 可以为权限的代码(code)或权限对象列表。entities - 需要同时初始化的关联实体列表(包含),列表元素可以是对象、或者数字表示用户的id、字符串表示用户名、或 Map如 [entityIdent:"1", type: RoleEntity.TYPE_ROL]entitiesExclude - 需要同时初始化的关联实体列表(排除).格式化角色代码:trim、转成大写、加上前缀ROL_
角色全名,格式为:域/应用/名称 (代码)
withCode - 是否包含代码获得角色关联(不含授权给所有人的角色)的用户基本信息
roleIds - 角色 ID 列表获得系统角色的移交日志
获得角色关联的权限 ID 列表
roleId - 角色 IDpermClass - 权限类,如 Permission、PermissionGroup、Requestmap,分别代表不同的权限类型;如果为空则计算所有获得角色关联的权限 ID 列表
roleIds - 角色 ID 列表permClass - 权限类,如 Permission、PermissionGroup、Requestmap,分别代表不同的权限类型;如果为空则计算所有获得直接关联的用户基本信息列表
如果要获得所有关联的用户,请使用 grantedUsers 或 RoleUser.getGrantedUserIds。
获得直接关联的用户列表
如果要获得所有关联的用户,请使用 grantedUsers、getGrantedUserMaps、RoleUser.getGrantedUserIds 等属性或方法。
角色代码、所属域/应用等属性是否可以被修改
角色是否可删除
角色是否允许编辑
角色是否是只读的,一般是一些自动维护的角色
关联授权实体
示例:
Role.findByCode ( " xxxx " )
.linkEntities( [user1, user2, "usernam1", "usrname2", ...], false )
.linkEntities( [org1, ...], true )
.save()
Role.createIfNotExists( [code: "xxxx", ....] )
.linkEntities( [user1, user2, "usernam1", "usrname2", ...], false )
.linkEntities( [org1, ...], true )
.save()
entities - 实体列表,元素可以是对象(员工、用户、机构、岗位、群组、角色等)、或者数字表示用户的id、字符串表示用户名、
或 Map 表示要绑定到 RoleEntity 的数据(如 [entityIdent:"1", type: RoleEntity.TYPE_ROL])excluded - 是否是排除关系,默认为否