feat: 秘钥凭证管理
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import uuid
|
||||
from datetime import timedelta
|
||||
|
||||
from sqlmodel import Field
|
||||
|
||||
from app.model.BasicModel import BasicModel
|
||||
from app.model.UserModel import UserService, UserServiceModel
|
||||
from app.utils.CrpyUtils import CryptUtils
|
||||
from app.utils.api_secret_utils import api_secret_utils
|
||||
from app.utils.create_module_service import create_model_service
|
||||
|
||||
|
||||
class ApiSecretModel(BasicModel, table=True):
|
||||
__tablename__ = "pl_api_secret"
|
||||
|
||||
secret: str = Field(..., description="api秘钥")
|
||||
description: str = Field(..., description="描述信息")
|
||||
|
||||
|
||||
# 插入数据之前,查询当前用户信息,使用username生成一个access_token作为秘钥保存到 ApiSecretModel中
|
||||
async def before_insert(row_dict, session):
|
||||
user: UserServiceModel = await UserService.query_item(session, {"id": row_dict.get("created_by")})
|
||||
row_dict["secret"] = CryptUtils.create_token(user.username, "access", timedelta(days=9999))
|
||||
|
||||
|
||||
# 删除ApiSecret凭据之前,先清理掉缓存中的秘钥信息
|
||||
async def before_delete(row_dict, session):
|
||||
row_cls: ApiSecretModel = await ApiSecretService.query_item(session, {"id": row_dict.get("id")})
|
||||
await api_secret_utils.remove_secret(row_cls.secret)
|
||||
|
||||
|
||||
# 更新ApiSecret凭据之前,先清理掉缓存中的秘钥信息
|
||||
async def before_update(row_dict, session):
|
||||
row_cls: ApiSecretModel = await ApiSecretService.query_item(session, {"id": row_dict.get("id")})
|
||||
await api_secret_utils.remove_secret(row_cls.secret)
|
||||
|
||||
|
||||
# 不允许批量处理ApiSecret凭据信息
|
||||
async def before_batch_method(row_dict_list, session):
|
||||
raise Exception("秘钥不支持批量操作!")
|
||||
|
||||
|
||||
ApiSecretService = create_model_service(
|
||||
Cls=ApiSecretModel,
|
||||
before_insert=before_insert,
|
||||
before_update=before_update,
|
||||
before_delete=before_delete,
|
||||
|
||||
before_batch_insert=before_batch_method,
|
||||
before_batch_update=before_batch_method,
|
||||
before_batch_delete=before_batch_method,
|
||||
)
|
||||
Reference in New Issue
Block a user