arkid_client.user.client 源代码
"""
Define UserClient
"""
from arkid_client.authorizers import BasicAuthorizer
from arkid_client.base import BaseClient
from arkid_client.exceptions import UserAPIError
from arkid_client.response import ArkIDHTTPResponse
[文档]class UserClient(BaseClient):
"""
用户管理客户端,
用于与 ArkID 服务端用户管理相关接口的访问操作。
**Methods**
* :py:meth:`.query_user`
* :py:meth:`.query_isolated_user`
* :py:meth:`.query_user`
* :py:meth:`.create_user`
* :py:meth:`.update_user`
* :py:meth:`.delete_user`
* :py:meth:`.query_specified_perm`
"""
allowed_authorizer_types = [BasicAuthorizer]
error_class = UserAPIError
default_response_class = ArkIDHTTPResponse
def __init__(self, base_url, authorizer=None, **kwargs):
BaseClient.__init__(self, base_url, "user", authorizer=authorizer, **kwargs)
[文档] def query_user_list(self, **params):
"""
获取用户信息列表
(``GET /siteapi/v1/user/``)
**Parameters**:
``keyword`` (*str*)
查询关键字,进行用户名、姓名、邮箱、手机号模糊搜索
``wechat_unionid`` (*str*)
微信客户端 openid
``page`` (*int*)
用于分页,*Default: 1*
``page_size`` (*int*)
指定分页大小,*Default: 30*
**Examples**
>>> uc = arkid_client.UserClient(...)
>>> users = uc.query_user(...)
>>> for user in users:
>>> print(user['username'], 'id: '
>>> ,user['id'])
**External Documentation**
关于 `用户的元数据 \
<https://arkid.docs.apiary.io/#reference/user/0/1>`_
详情请参阅API文档。
"""
self.logger.info("正在调用 UserClient.query_user_list() 接口与 ArkID 服务端进行交互")
return self.get(path='', params=params)
[文档] def query_isolated_user(self, **params):
"""
获取所有独立用户
(``GET /siteapi/v1/user/isolated/``)
**Parameters**:
``page`` (*int*)
用于分页,*Default: 1*
``page_size`` (*int*)
指定分页大小,*Default: 30*
**Examples**
>>> uc = arkid_client.UserClient(...)
>>> users = uc.query_isolated_user(...)
>>> for user in users:
>>> print(user['username'], 'id: '
>>> ,user['id'])
"""
self.logger.info("正在调用 UserClient.query_isolated_user() 接口与 ArkID 服务端进行交互")
return self.get(path='isolated/', params=params)
[文档] def query_user(self, username: str):
"""
获取指定用户的信息
(``GET /siteapi/v1/user/<username>/``)
**Parameters**:
``username`` (*str*)
用户唯一标识
**Examples**
>>> uc = arkid_client.UserClient(...)
>>> user = uc.query_user(...)
>>> print(user['username'], 'id: '
>>> ,user['id'])
"""
self.logger.info("正在调用 UserClient.query_user() 接口与 ArkID 服务端进行交互")
return self.get(path='{}/'.format(username))
[文档] def create_user(self, json_body: dict):
"""
创建用户(需要管理员权限)
(``POST /siteapi/v1/user/``)
**Parameters**:
``json_body`` (*dict*)
``group_uids`` (*list[str]*)
用户组 ``uuid`` 的集合
``dept_uids`` (*list[str]*)
部门 ``uuid`` 的集合
``user`` (*dict*)
用户的元信息, 参数详情请参考接口文档
``node_uids`` (*list[str]*)
(可选的)此字段提供时会忽略 ``group_uids``, ``dept_uids``
**Examples**
>>> uc = arkid_client.UserClient(...)
>>> user_data = {
>>> "user": {
>>> "password": "example",
>>> "username": "example"
>>> }
>>> }
>>> user = uc.create_user(user_data)
>>> print(user['username'], 'id: '
>>> ,user['id'])
**External Documentation**
关于 `用户的元数据 \
<https://arkid.docs.apiary.io/#reference/user/0/0>`_
详情请参阅API文档。
"""
self.logger.info("正在调用 UserClient.create_user() 接口与 ArkID 服务端进行交互")
return self.post(path='', json_body=json_body)
[文档] def update_user(self, username: str, json_body: dict):
"""
修改指定用户的信息
(``PATCH /siteapi/v1/user/<username>``)
**Parameters**:
``username`` (*str*)
用户唯一标识
``json_body`` (*dict*)
用户的元信息, 参数详情请参考接口文档
**Examples**
>>> uc = arkid_client.UserClient(...)
>>> query_data = {
>>> "password": "example",
>>> "private_email": "example@org.com"
>>> }
>>> user = uc.update_user(username, query_data)
>>> print(user['username'], 'id: '
>>> ,user['id'])
**External Documentation**
关于 `用户的元数据 \
<https://arkid.docs.apiary.io/#reference/user/2/1>`_
详情请参阅API文档。
"""
self.logger.info("正在调用 UserClient.update_user() 接口与 ArkID 服务端进行交互")
return self.patch(path='{}/'.format(username), json_body=json_body)
[文档] def delete_user(self, username: str):
"""
删除指定用户的信息
(``DELETE /siteapi/v1/user/<username>/``)
**Parameters**:
``username`` (*str*)
用户唯一标识
**Examples**
>>> uc = arkid_client.UserClient(...)
>>> uc.delete_user(username)
"""
self.logger.info("正在调用 UserClient.delete_user() 接口与 ArkID 服务端进行交互")
return self.delete(path='{}/'.format(username))
[文档] def query_specified_perm(self, username: str, uid: str):
"""
获取用户权限详情,包括权限来源
(``GET /siteapi/v1/user/<username>/perm/<uid>/``)
**Parameters**:
``username`` (*str*)
用户唯一标识
``uid`` (*str*)
权限唯一标识
**Examples**
>>> pc = arkid_client.UserClient(...)
>>> perm = pc.query_specified_perm(...)
>>> print('perm is', perm)
"""
self.logger.info("正在调用 UserClient.query_specified_perm() 接口与 ArkID 服务端进行交互")
return self.get(path='{}/perm/{}/'.format(username, uid))