Skip to content

Commit a6dcec0

Browse files
perf: Optimize API permission validation
1 parent 5732690 commit a6dcec0

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

backend/apps/system/api/aimodel.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
router = APIRouter(tags=["system_model"], prefix="/system/aimodel")
1919

2020
@router.post("/status", include_in_schema=False)
21+
@require_permissions(permission=SqlbotPermission(role=['admin']))
2122
async def check_llm(info: AiModelCreator, trans: Trans):
2223
async def generate():
2324
try:
@@ -92,6 +93,7 @@ async def query(
9293
return items
9394

9495
@router.get("/{id}", response_model=AiModelEditor, summary=f"{PLACEHOLDER_PREFIX}system_model_query", description=f"{PLACEHOLDER_PREFIX}system_model_query")
96+
@require_permissions(permission=SqlbotPermission(role=['admin']))
9597
async def get_model_by_id(
9698
session: SessionDep,
9799
id: int = Path(description="ID")

backend/apps/system/middleware/auth.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,12 @@ async def validateEmbedded(self, param: str, trans: I18n) -> tuple[any]:
205205
return False, f"Miss account payload error!"
206206
account = payload['account']
207207
with Session(engine) as session:
208+
assistant_info = await get_assistant_info(session=session, assistant_id=embeddedId)
209+
assistant_info = AssistantModel.model_validate(assistant_info)
210+
payload = jwt.decode(
211+
param, assistant_info.app_secret, algorithms=[security.ALGORITHM]
212+
)
213+
assistant_info = AssistantHeader.model_validate(assistant_info.model_dump(exclude_unset=True))
208214
""" session_user = await get_user_info(session = session, user_id = token_data.id)
209215
session_user = UserInfoDTO.model_validate(session_user) """
210216
session_user = get_user_by_account(session = session, account=account)
@@ -220,12 +226,7 @@ async def validateEmbedded(self, param: str, trans: I18n) -> tuple[any]:
220226
if not session_user.oid or session_user.oid == 0:
221227
message = trans('i18n_login.no_associated_ws', msg = trans('i18n_concat_admin'))
222228
raise Exception(message)
223-
assistant_info = await get_assistant_info(session=session, assistant_id=embeddedId)
224-
assistant_info = AssistantModel.model_validate(assistant_info)
225-
payload = jwt.decode(
226-
param, assistant_info.app_secret, algorithms=[security.ALGORITHM]
227-
)
228-
assistant_info = AssistantHeader.model_validate(assistant_info.model_dump(exclude_unset=True))
229+
229230
return True, session_user, assistant_info
230231
except Exception as e:
231232
SQLBotLogUtil.exception(f"Embedded validation error: {str(e)}")

0 commit comments

Comments
 (0)