From 2b1432249a1a192c0aadd7133d8f41c87d5f1c14 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Fri, 25 Jul 2025 18:08:20 +0800 Subject: [PATCH] perf: Check user status --- backend/apps/system/middleware/auth.py | 6 ++++++ frontend/src/utils/request.ts | 16 ++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/backend/apps/system/middleware/auth.py b/backend/apps/system/middleware/auth.py index 23bdd512..8c3a1f59 100644 --- a/backend/apps/system/middleware/auth.py +++ b/backend/apps/system/middleware/auth.py @@ -62,7 +62,13 @@ class TokenMiddleware(BaseHTTPMiddleware): try: with Session(engine) as session: session_user = await get_user_info(session = session, user_id = token_data.id) + if not session_user: + raise Exception(f"User not found with id: {token_data.id}") session_user = UserInfoDTO.model_validate(session_user) + if session_user.status != 1: + raise Exception(f"User is not active!") + if not session_user.oid or session_user.oid == 0: + raise Exception(f"User default space is not set!") """ if token_data.oid != session_user.oid: raise HTTPException( status_code=401, diff --git a/frontend/src/utils/request.ts b/frontend/src/utils/request.ts index 9aee595d..2851979c 100644 --- a/frontend/src/utils/request.ts +++ b/frontend/src/utils/request.ts @@ -168,9 +168,21 @@ class HttpService { errorMessage = 'Invalid request parameters' break case 401: - errorMessage = 'Unauthorized, please login again' + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + errorMessage = error.response?.data?.data?.msg || 'Unauthorized, please login again' // Redirect to login page if needed - break + ElMessage({ + message: errorMessage, + type: 'error', + showClose: true, + }) + setTimeout(() => { + wsCache.delete('user.token') + window.location.reload() + }, 1000) + return + // break case 403: errorMessage = 'Access denied' break