¶ 管理角色
更新时间: 2024-10-10 07:28:40
此模块用于管理 Authing 角色,可以进行角色的增删改查、角色添加/删除用户等操作。
请通过以下方式使用该模块:
from authing.v2.management import ManagementClient, ManagementClientOptions
management_client = ManagementClient(
options=ManagementClientOptions(
user_pool_id='AUTHING_USERPOOL_ID',
secret='AUTHING_USERPOOL_SECRET',
))
management_client.roles.list # 获取角色列表
management_client.roles.create # 创建角色
management_client.roles.list_users # 获取用户列表
¶ 创建角色
创建角色,可以指定不同的权限分组
def create(self, code, description=None, namespace=None)
¶ 参数
code
<str> 角色唯一标志符description
<str> 描述namespace
<str> 权限分组 code
¶ 示例
code = 'code'
role = management_client.roles.create(code=code, namespace="default")
¶ 删除角色
删除角色
def delete(self, code, namespace=None)
¶ 参数
code
<str> 角色唯一标志符namespace
<str> 权限分组 code
¶ 示例
data = management_client.roles.delete(code='code', namespace="default")
code = data['code'] # 200 表示成功
¶ 批量删除角色
批量删除角色
def delete_many(self, code_list, namespace=None)
¶ 参数
code_list
<str[]> 角色唯一标志符列表namespace
<str> 权限分组 code
¶ 示例
data = management_client.roles.delete_many([
'ROLE1',
'ROLE2'
])
totalCount = data['totalCount']
_list = data['list']
¶ 修改角色
修改角色
def update(self, code, description=None, newCode=None, namespace=None)
¶ 参数
code
<str> 角色唯一标志符description
<str> 描述信息newCode
<str> 新的唯一标志符namespace
<str> 权限分组 code
¶ 示例
# 修改基本信息
code = 'code'
desc = '描述'
role = management_client.roles.update(code=code, description=desc)
# 修改新 code
role = management_client.roles.update(code='old', newCode="new")
¶ 获取角色详情
获取角色详情
def detail(self, code, namespace=None)
¶ 参数
code
<str> 角色唯一标志符namespace
<str> 权限分组 code
¶ 示例
code = 'code'
management_client.roles.create(code=code)
¶ 获取角色列表
获取某一个权限分组下的角色列表
def list(self, page=1, limit=10, namespace=None)
¶ 参数
page
<int> 页码数 默认值为 :1
limit
<int> 每页个数 默认值为 :10
namespace
<str> 权限分组 code
¶ 示例
data = management_client.roles.list()
totalCount = data['totalCount']
_list = data['list']
¶ 获取用户列表
获取用户列表。此接口为分页接口
def list_users(self, code, page=1, limit=10, namespace=None, with_custom_data=False)
¶ 参数
code
<str> 角色唯一标志符page
<int> 页码数 默认值为 :1
limit
<int> 每页个数 默认值为 :10
namespace
<str> 权限分组 codewith_custom_data
: <boolean> 是否获取自定义数据,默认为 false;如果设置为 true,将会在customData
字段返回用户的所有自定义数据。示例:
¶ 示例
- 获取「默认权限分组」下面的角色 「ROLE」的用户(分页)
data = management_client.roles.list_users('ROLE')
totalCount = data['totalCount']
lst = data['list']
- 获取用户列表的同时,获取用户的自定义数据
data = management_client.roles.list_users('ROLE', with_custom_data=True)
totalCount = data['totalCount']
lst = data['list']
¶ 添加用户
添加用户
def add_users(self, code, userIds, namespace=None)
¶ 参数
code
<str> 角色唯一标志符userIds
<str[]> 用户 ID 列表namespace
<str> 权限分组 code
¶ 示例
data = management_client.roles.add_users('ROLE', [
'USERID1',
'USERID2'
])
totalCount = data['totalCount']
_list = data['list']
¶ 移除用户
移除用户
def remove_users(self, code, userIds, namespace=None)
¶ 参数
code
<str> 角色唯一标志符userIds
<str[]> 用户 ID 列表namespace
<str> 权限分组 code
¶ 示例
data = management_client.roles.remove_users('ROLE', [
'USERID1',
'USERID2'
])
totalCount = data['totalCount']
_list = data['list']
¶ 获取角色被授权的所有资源列表
获取一个角色被授权的所有资源。
def list_authorized_resources(self, code, namespace, resource_type=None)
¶ 参数
code
<str> 角色 codenamespace
<str> 权限分组的 code,详情请见使用权限分组管理权限资源resource_type
<str> 可选,资源类型,默认会返回所有有权限的资源,现有资源类型如下:DATA
: 数据类型API
: API 类型数据MENU
: 菜单类型数据BUTTON
: 按钮类型数据
¶ 示例
management_client.roles.list_authorized_resources('roleCode', 'default')
¶ 示例数据
type
为资源类型code
: 资源描述符,如果是DATA
类型资源,格式为resourceType:resourceId
,如books:*
表示所有书籍,books:1
表示 ID 为 1 的书籍actions
: 用户被授权对该资源的操作
{
"totalCount": 12,
"list": [
{
"code": "menu_a",
"type": "MENU"
},
{
"code": "menu_b",
"type": "MENU"
},
{
"code": "books:1",
"type": "DATA",
"actions": ["books:delete", "books:update"]
}
]
}
¶ 获取某个角色扩展字段列表
获取某个角色扩展字段列表
def get_udf_value(self, id)
¶ 参数
roleId
<str> 角色 ID
¶ 示例
data = management_client.roles.get_udf_value('ROLE_ID')
¶ 示例数据
{
"key": "value"
}
¶ 获取某个角色某个扩展字段
获取某个角色某个扩展字段
def get_specific_udf_value(self, id, key)
¶ 参数
id
<str> 角色 IDkey
<str> 扩展字段 Key
¶ 示例
data = management_client.roles.get_udf_value('ROLE_ID', 'key')
¶ 获取多个角色扩展字段列表
获取多个角色扩展字段列表
def get_udf_value_batch(self, ids)
¶ 参数
ids
<list> 角色 ID 列表
¶ 示例
management_client.roles.get_udf_value_batch(
ids=[
'id1',
'id2'
]
)
¶ 示例数据
{
"ROLE_ID1": {
"key1": "value1"
},
"ROLE_ID2": {
"key1": "value2"
}
}
¶ 设置角色扩展字段
设置角色扩展字段
def set_udf_value(self, id, data)
¶ 参数
id
<str> 角色 IDdata
<dict> 扩展字段,key: value
¶ 示例
management_client.roles.set_udf_value('roleId', {
key: value
})
¶ 设置多个角色扩展字段列表
设置多个角色扩展字段列表
def set_udf_value_batch(self, data)
¶ 参数
data
<dict> 数据输入,类型请见示例
¶ 示例
role1_id = 'xxx'
role2_id = 'xxx'
management.roles.set_udf_value_batch(
{
role1_id: {
key: value
},
role2_id: {
key: value
}
}
)
¶ 删除角色的扩展字段
删除角色的扩展字段
def remove_udf_value(self, id, key)
¶ 参数
id
<str> 角色 IDkey
<str> 扩展字段名
¶ 示例
management_client.roles.remove_udf_value('id', 'key')
¶ 获取角色策略列表
获取角色策略列表
def list_policies(self, code, page=1, limit=10)
¶ 参数
code
<str> 角色 codepage
<int> 页码数 默认值为 :1
limit
<int> 每页个数 默认值为 :10
¶ 示例
management.roles.list_policies(role['code'])
¶ 给角色授权策略
给角色授权策略
def add_policies(self, code, policies)
¶ 参数
code
<str> 角色 codepolicies
<list> 策略编码
¶ 示例
policy = management.policies.create(
code=‘code',
statements=[
{
'resource': 'book:123',
'actions': ['books:read'],
'effect': 'ALLOW'
}
]
)
role = create_role()
management.roles.add_policies(role['code'], [policy['code']])
¶ 角色移除策略
角色移除策略
def remove_policies(self, code, policies)
¶ 参数
code
<str> 角色 codepolicies
<list> 策略编码
¶ 示例
policy = management.policies.create(
code=‘code',
statements=[
{
'resource': 'book:123',
'actions': ['books:read'],
'effect': 'ALLOW'
}
]
)
role = create_role()
management.roles.add_policies(role['code'], [policy['code']])
management.roles.remove_policies(role['code'], [policy['code']])