From 70b0706973d9d856ca9f136df23a6fbec0901aea Mon Sep 17 00:00:00 2001 From: l3wdfut4pwr Date: Thu, 9 Apr 2026 15:21:30 +0300 Subject: update settings --- app/routes/me.py | 53 +++++++++++++++++++++++++++++++++-------------------- app/routes/user.py | 2 +- 2 files changed, 34 insertions(+), 21 deletions(-) (limited to 'app/routes') diff --git a/app/routes/me.py b/app/routes/me.py index 03d0daa..65368e3 100644 --- a/app/routes/me.py +++ b/app/routes/me.py @@ -1,4 +1,4 @@ -from fastapi import APIRouter, Depends, HTTPException, Request +from fastapi import APIRouter, Depends, Request from sqlalchemy.ext.asyncio import AsyncSession from app.auth.jwt import decode_token @@ -11,30 +11,43 @@ router = APIRouter(tags=["auth"]) async def get_current_user_from_cookie( request: Request, session: AsyncSession = Depends(get_async_session), -): +) -> dict: token = request.cookies.get("access_token") if not token: - raise HTTPException(status_code=401, detail="Unauthorized") + return {"authenticated": False, "user": None} - payload = decode_token(token) - user_id = int(payload.get("sub")) - user = await User.get_user_by_id(user_id, session=session) + try: + payload = decode_token(token) + sub = payload.get("sub") + if sub is None: + return {"authenticated": False, "user": None} + user_id = int(sub) + except ValueError, TypeError: + return {"authenticated": False, "user": None} - if not user: - raise HTTPException(status_code=404, detail="User not found") - if user.token_version != payload.get("token_version"): - raise HTTPException(status_code=401, detail="Token revoked") + user = await User.get_user_by_id(user_id, session=session) + if not user or user.token_version != payload.get("token_version"): + return {"authenticated": False, "user": None} - return user + # Return authenticated user + return { + "authenticated": True, + "user": { + "id": user.id, + "username": user.username, + "password": user.has_password, + "google_id": user.google_id, + "email": user.email, + "premium": user.premium, + "is_banned": user.is_banned, + "is_moderator": user.is_moderator, + }, + } @router.get("/me") -async def read_current_user(user: User = Depends(get_current_user_from_cookie)): - return { - "id": user.id, - "username": user.username, - "email": user.email, - "premium": user.premium, - "is_banned": user.is_banned, - "is_moderator": user.is_moderator, - } +async def read_current_user( + user_info: dict = Depends(get_current_user_from_cookie), +): + # Directly return the dict to the frontend + return user_info diff --git a/app/routes/user.py b/app/routes/user.py index 0860cc1..1eb096d 100644 --- a/app/routes/user.py +++ b/app/routes/user.py @@ -18,4 +18,4 @@ async def get_user( if not user: raise HTTPException(status_code=404, detail="User not found") - return user + return UserRead.model_validate(user) -- cgit v1.3-3-g829e