add is_superuser for jwt token
This commit is contained in:
@@ -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)
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user