add is_superuser for jwt token

This commit is contained in:
IluaAir
2025-09-20 13:55:36 +03:00
parent 0de7d63817
commit e0cddbdd34
2 changed files with 8 additions and 4 deletions

View File

@@ -1,4 +1,4 @@
from pydantic import BaseModel from pydantic import BaseModel, ConfigDict, Field
class Token(BaseModel): class Token(BaseModel):
@@ -8,5 +8,8 @@ class Token(BaseModel):
class TokenData(BaseModel): class TokenData(BaseModel):
id: int id: int
sub: str sub: str = Field(alias='username')
is_superuser: bool
is_active: bool is_active: bool
model_config = ConfigDict(populate_by_name=True)

View File

@@ -2,7 +2,7 @@ from fastapi import HTTPException
from src.core.auth_manager import AuthManager from src.core.auth_manager import AuthManager
from src.core.settings import settings 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.schemas.users import User, UserAdd, UserRequestADD, UserWithHashedPass
from src.services.base import BaseService from src.services.base import BaseService
@@ -27,6 +27,7 @@ class AuthService(BaseService):
detail="Incorrect username or password", detail="Incorrect username or password",
) )
user = UserWithHashedPass.model_validate(result) user = UserWithHashedPass.model_validate(result)
user_token = TokenData.model_validate(user.model_dump())
verify = AuthManager.verify_password( verify = AuthManager.verify_password(
plain_password=password, hashed_password=user.hashed_password plain_password=password, hashed_password=user.hashed_password
) )
@@ -36,7 +37,7 @@ class AuthService(BaseService):
detail="Incorrect username or password", detail="Incorrect username or password",
) )
access_token = AuthManager.create_access_token( access_token = AuthManager.create_access_token(
data={"id": user.id, "sub": user.username, "is_active": user.is_active} user_token.model_dump()
) )
return Token( return Token(
access_token=access_token, token_type=settings.access_token.token_type access_token=access_token, token_type=settings.access_token.token_type