perf: Optimize API permission validation

This commit is contained in:
fit2cloud-chenyw
2025-12-24 15:27:51 +08:00
committed by fit2cloud-chenyw
parent 5732690a3b
commit a6dcec08ab
2 changed files with 9 additions and 6 deletions
+2
View File
@@ -18,6 +18,7 @@ from common.utils.utils import SQLBotLogUtil, prepare_model_arg
router = APIRouter(tags=["system_model"], prefix="/system/aimodel")
@router.post("/status", include_in_schema=False)
@require_permissions(permission=SqlbotPermission(role=['admin']))
async def check_llm(info: AiModelCreator, trans: Trans):
async def generate():
try:
@@ -92,6 +93,7 @@ async def query(
return items
@router.get("/{id}", response_model=AiModelEditor, summary=f"{PLACEHOLDER_PREFIX}system_model_query", description=f"{PLACEHOLDER_PREFIX}system_model_query")
@require_permissions(permission=SqlbotPermission(role=['admin']))
async def get_model_by_id(
session: SessionDep,
id: int = Path(description="ID")
+7 -6
View File
@@ -205,6 +205,12 @@ class TokenMiddleware(BaseHTTPMiddleware):
return False, f"Miss account payload error!"
account = payload['account']
with Session(engine) as session:
assistant_info = await get_assistant_info(session=session, assistant_id=embeddedId)
assistant_info = AssistantModel.model_validate(assistant_info)
payload = jwt.decode(
param, assistant_info.app_secret, algorithms=[security.ALGORITHM]
)
assistant_info = AssistantHeader.model_validate(assistant_info.model_dump(exclude_unset=True))
""" session_user = await get_user_info(session = session, user_id = token_data.id)
session_user = UserInfoDTO.model_validate(session_user) """
session_user = get_user_by_account(session = session, account=account)
@@ -220,12 +226,7 @@ class TokenMiddleware(BaseHTTPMiddleware):
if not session_user.oid or session_user.oid == 0:
message = trans('i18n_login.no_associated_ws', msg = trans('i18n_concat_admin'))
raise Exception(message)
assistant_info = await get_assistant_info(session=session, assistant_id=embeddedId)
assistant_info = AssistantModel.model_validate(assistant_info)
payload = jwt.decode(
param, assistant_info.app_secret, algorithms=[security.ALGORITHM]
)
assistant_info = AssistantHeader.model_validate(assistant_info.model_dump(exclude_unset=True))
return True, session_user, assistant_info
except Exception as e:
SQLBotLogUtil.exception(f"Embedded validation error: {str(e)}")