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.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()
|
||||||
|
|||||||
@@ -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凭据信息
|
||||||
|
|||||||
Reference in New Issue
Block a user