add user get, access token add id
This commit is contained in:
@@ -17,3 +17,9 @@ async def get_me(user: ActiveUser):
|
||||
async def get_all_users(db: sessionDep, user: AdminUser):
|
||||
users = await UserService(db).get_all_users()
|
||||
return users
|
||||
|
||||
|
||||
@router.get("/{id}")
|
||||
async def get_user_by_id(db: sessionDep, id: int, user: AdminUser):
|
||||
user = await UserService(db).get_user_by_filter_or_raise(id=id)
|
||||
return user
|
||||
@@ -7,5 +7,6 @@ class Token(BaseModel):
|
||||
|
||||
|
||||
class TokenData(BaseModel):
|
||||
id: int | None = None
|
||||
sub: str | None = None
|
||||
is_active: bool
|
||||
|
||||
@@ -35,6 +35,6 @@ class AuthService(BaseService):
|
||||
detail="Incorrect username or password",
|
||||
)
|
||||
access_token = AuthManager.create_access_token(
|
||||
data={"sub": user.username, "is_active": user.is_active}
|
||||
data={"id": user.id, "sub": user.username, "is_active": user.is_active}
|
||||
)
|
||||
return Token(access_token=access_token, token_type="bearer")
|
||||
|
||||
@@ -5,20 +5,20 @@ from src.services.base import BaseService
|
||||
|
||||
|
||||
class UserService(BaseService):
|
||||
async def get_user_by_username(self, username: str) -> User | None:
|
||||
result = await self.session.user.get_one_or_none(username=username)
|
||||
async def get_user_by_filter(self, **filter_by) -> User | None:
|
||||
result = await self.session.user.get_one_or_none(**filter_by)
|
||||
if result is None:
|
||||
return None
|
||||
return User.model_validate(result)
|
||||
|
||||
async def get_user_by_username_or_raise(self, username: str) -> User:
|
||||
user = await self.get_user_by_username(username)
|
||||
async def get_user_by_filter_or_raise(self, **filter_by) -> User:
|
||||
user = await self.get_user_by_filter(**filter_by)
|
||||
if user is None:
|
||||
raise HTTPException(status_code=404, detail="User not found")
|
||||
return user
|
||||
|
||||
async def validate_admin_user(self, username: str) -> User:
|
||||
user = await self.get_user_by_username_or_raise(username)
|
||||
user = await self.get_user_by_filter_or_raise(username=username)
|
||||
if not user.is_superuser:
|
||||
raise HTTPException(status_code=403, detail="Admin access required")
|
||||
return user
|
||||
|
||||
Reference in New Issue
Block a user