feat: add_general_interceptor_api_secret处理秘钥的生成逻辑
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
from datetime import timedelta
|
||||
|
||||
from app.general.general_interceptors import add_general_interceptor, GeneralInterceptor
|
||||
from app.model.ApiSecretModel import ApiSecretModel, ApiSecretService
|
||||
from app.model.UserModel import UserServiceModel, UserService
|
||||
from app.utils.CrpyUtils import CryptUtils
|
||||
from app.utils.api_secret_utils import api_secret_utils
|
||||
|
||||
|
||||
# 插入数据之前,查询当前用户信息,使用username生成一个access_token作为秘钥保存到 ApiSecretModel中
|
||||
async def before_insert(row, session, user):
|
||||
user: UserServiceModel = await UserService.query_item(session, {"id": user.id})
|
||||
row["secret"] = CryptUtils.create_token(user.username, "api", timedelta(days=9999))
|
||||
|
||||
|
||||
# 删除ApiSecret凭据之前,先清理掉缓存中的秘钥信息
|
||||
async def before_delete(query_config, session, user):
|
||||
row_cls: ApiSecretModel = await ApiSecretService.query_item(session, {"id": query_config.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("秘钥不支持批量操作!")
|
||||
|
||||
|
||||
def add_general_interceptor_api_secret():
|
||||
add_general_interceptor(GeneralInterceptor(
|
||||
module="api_secret",
|
||||
before_insert=before_insert,
|
||||
before_delete=before_delete,
|
||||
before_update=before_update,
|
||||
before_batch_insert=before_batch_method,
|
||||
before_batch_update=before_batch_method,
|
||||
))
|
||||
@@ -29,6 +29,7 @@ from app.controller.test_sync import add_test_sync_route
|
||||
from app.controller.translate_controller import add_translate_route
|
||||
from app.create_app import create_app
|
||||
from app.general.add_general_route import add_general_route
|
||||
from app.general_interceptors.add_general_interceptor_api_secret import add_general_interceptor_api_secret
|
||||
from app.general_interceptors.add_general_interceptor_knowledge_doc import add_general_interceptor_knowledge_doc
|
||||
from app.general_interceptors.add_general_interceptor_llm_user import add_general_interceptor_llm_user
|
||||
from app.general_interceptors.add_general_interceptor_module import add_general_interceptor_module
|
||||
@@ -154,3 +155,4 @@ ModuleService.add_route(app=app, path="/module")
|
||||
add_general_interceptor_llm_user()
|
||||
add_general_interceptor_knowledge_doc()
|
||||
add_general_interceptor_module()
|
||||
add_general_interceptor_api_secret()
|
||||
|
||||
@@ -21,18 +21,21 @@ class ApiSecretModel(BasicModel, table=True):
|
||||
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, "api", timedelta(days=9999))
|
||||
raise Exception("ApiSecretModel service is desperate!")
|
||||
|
||||
|
||||
# 删除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)
|
||||
raise Exception("ApiSecretModel service is desperate!")
|
||||
|
||||
|
||||
# 更新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)
|
||||
raise Exception("ApiSecretModel service is desperate!")
|
||||
|
||||
|
||||
# 不允许批量处理ApiSecret凭据信息
|
||||
|
||||
Reference in New Issue
Block a user