28 lines
1.1 KiB
Python
28 lines
1.1 KiB
Python
from fastapi import APIRouter, HTTPException
|
|
from setech.utils import get_logger
|
|
|
|
from service.api.dependencies import QueryParams
|
|
from service.core.exceptions import InvalidEmail
|
|
from service.crud.user import UserMe, UserPublic, UserRegister, get_user_by_username, get_users, register_user
|
|
|
|
user_router = router = APIRouter()
|
|
logger = get_logger("api")
|
|
|
|
|
|
@router.get("/list")
|
|
async def list_users_view(_params: QueryParams) -> list[UserPublic] | None:
|
|
return await get_users(_params)
|
|
|
|
|
|
@router.post("/register")
|
|
async def register_user_view(data: UserRegister) -> UserMe | None:
|
|
try:
|
|
if await get_user_by_username(username=data.email):
|
|
raise HTTPException(400, "Given email is already registered!")
|
|
except InvalidEmail as e:
|
|
logger.warning(f"Attempting to register with invalid email: '{data.email}'")
|
|
raise HTTPException(400, str(e))
|
|
logger.info(f"Creating user with email: '{data.email}'")
|
|
user = await register_user(data)
|
|
return UserMe(id=user.id, username=user.username, email=user.email, is_superuser=user.is_superuser)
|