feat: add_general_interceptor_api_secret处理秘钥的生成逻辑

This commit is contained in:
martsforever
2025-12-03 22:44:02 +08:00
parent 50c1eb18ab
commit b0cbf64253
3 changed files with 46 additions and 0 deletions
@@ -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,
))
+2
View File
@@ -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.controller.translate_controller import add_translate_route
from app.create_app import create_app from app.create_app import create_app
from app.general.add_general_route import add_general_route 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_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_llm_user import add_general_interceptor_llm_user
from app.general_interceptors.add_general_interceptor_module import add_general_interceptor_module 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_llm_user()
add_general_interceptor_knowledge_doc() add_general_interceptor_knowledge_doc()
add_general_interceptor_module() add_general_interceptor_module()
add_general_interceptor_api_secret()
+3
View File
@@ -21,18 +21,21 @@ class ApiSecretModel(BasicModel, table=True):
async def before_insert(row_dict, session): async def before_insert(row_dict, session):
user: UserServiceModel = await UserService.query_item(session, {"id": row_dict.get("created_by")}) 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)) row_dict["secret"] = CryptUtils.create_token(user.username, "api", timedelta(days=9999))
raise Exception("ApiSecretModel service is desperate!")
# 删除ApiSecret凭据之前,先清理掉缓存中的秘钥信息 # 删除ApiSecret凭据之前,先清理掉缓存中的秘钥信息
async def before_delete(row_dict, session): async def before_delete(row_dict, session):
row_cls: ApiSecretModel = await ApiSecretService.query_item(session, {"id": row_dict.get("id")}) row_cls: ApiSecretModel = await ApiSecretService.query_item(session, {"id": row_dict.get("id")})
await api_secret_utils.remove_secret(row_cls.secret) await api_secret_utils.remove_secret(row_cls.secret)
raise Exception("ApiSecretModel service is desperate!")
# 更新ApiSecret凭据之前,先清理掉缓存中的秘钥信息 # 更新ApiSecret凭据之前,先清理掉缓存中的秘钥信息
async def before_update(row_dict, session): async def before_update(row_dict, session):
row_cls: ApiSecretModel = await ApiSecretService.query_item(session, {"id": row_dict.get("id")}) row_cls: ApiSecretModel = await ApiSecretService.query_item(session, {"id": row_dict.get("id")})
await api_secret_utils.remove_secret(row_cls.secret) await api_secret_utils.remove_secret(row_cls.secret)
raise Exception("ApiSecretModel service is desperate!")
# 不允许批量处理ApiSecret凭据信息 # 不允许批量处理ApiSecret凭据信息