From e0cddbdd34c2942a87ade86ea11a4fec2c9c8707 Mon Sep 17 00:00:00 2001 From: IluaAir Date: Sat, 20 Sep 2025 13:55:36 +0300 Subject: [PATCH] add is_superuser for jwt token --- src/schemas/auth.py | 7 +++++-- src/services/auth.py | 5 +++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/schemas/auth.py b/src/schemas/auth.py index fbbf040..4f09de9 100644 --- a/src/schemas/auth.py +++ b/src/schemas/auth.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel +from pydantic import BaseModel, ConfigDict, Field class Token(BaseModel): @@ -8,5 +8,8 @@ class Token(BaseModel): class TokenData(BaseModel): id: int - sub: str + sub: str = Field(alias='username') + is_superuser: bool is_active: bool + + model_config = ConfigDict(populate_by_name=True) \ No newline at end of file diff --git a/src/services/auth.py b/src/services/auth.py index 63d6e3a..9c0b626 100644 --- a/src/services/auth.py +++ b/src/services/auth.py @@ -2,7 +2,7 @@ from fastapi import HTTPException from src.core.auth_manager import AuthManager from src.core.settings import settings -from src.schemas.auth import Token +from src.schemas.auth import Token, TokenData from src.schemas.users import User, UserAdd, UserRequestADD, UserWithHashedPass from src.services.base import BaseService @@ -27,6 +27,7 @@ class AuthService(BaseService): detail="Incorrect username or password", ) user = UserWithHashedPass.model_validate(result) + user_token = TokenData.model_validate(user.model_dump()) verify = AuthManager.verify_password( plain_password=password, hashed_password=user.hashed_password ) @@ -36,7 +37,7 @@ class AuthService(BaseService): detail="Incorrect username or password", ) access_token = AuthManager.create_access_token( - data={"id": user.id, "sub": user.username, "is_active": user.is_active} + user_token.model_dump() ) return Token( access_token=access_token, token_type=settings.access_token.token_type