add admin check
This commit is contained in:
24
src/services/users.py
Normal file
24
src/services/users.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from fastapi import HTTPException
|
||||
|
||||
from src.schemas.users import User
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
if not user.is_superuser:
|
||||
raise HTTPException(status_code=403, detail="Admin access required")
|
||||
return user
|
||||
Reference in New Issue
Block a user