add admin check

This commit is contained in:
IluaAir
2025-07-26 12:48:01 +03:00
parent 1a495e28c5
commit 36dad7b441
4 changed files with 48 additions and 9 deletions

24
src/services/users.py Normal file
View 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