47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
from fastapi import APIRouter, Depends, HTTPException, Request
|
|
from fastapi.responses import JSONResponse
|
|
|
|
from bsition.api.models.user import User
|
|
from bsition.api.utils.password import get_hashed_password
|
|
from bsition.api.utils.security import get_current_user
|
|
from bsition.backend import postgres
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.post("")
|
|
def create_user(user: User):
|
|
aux = postgres.get_user_by_username_and_password(user.username, user.password)
|
|
if aux is not None:
|
|
raise HTTPException(
|
|
status_code=400,
|
|
detail="User already exists.",
|
|
)
|
|
|
|
postgres.add_user(user.username, get_hashed_password(user.password))
|
|
return JSONResponse(content={"detail": "User created."}, status_code=201)
|
|
|
|
|
|
@router.get("/me")
|
|
def get_logged_user(user: User = Depends(get_current_user)):
|
|
return user
|
|
|
|
|
|
router.dependencies = [Depends(get_current_user)]
|
|
|
|
|
|
@router.get("")
|
|
def get_users():
|
|
return postgres.get_users()
|
|
|
|
|
|
@router.get("/{id}")
|
|
def get_by_id(id: str):
|
|
return postgres.get_user_by_id(id)
|
|
|
|
|
|
@router.put("/{id}")
|
|
def edit_user(aux: User, id: str):
|
|
postgres.edit_user(id, aux.username, get_hashed_password(aux.password))
|
|
return JSONResponse(content={"detail": "User updated."}, status_code=202)
|