44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
from app.api import crud
|
|
from app.api.models import token, userDB, userSchema
|
|
from app.api.utils import is_admin, is_logged, is_a_user
|
|
from .utils import *
|
|
from fastapi import APIRouter, HTTPException, Header, Path, FastAPI, Depends, Request
|
|
from typing import List
|
|
import os
|
|
|
|
router = APIRouter()
|
|
SECRET = os.getenv('SECRET')
|
|
|
|
# List users
|
|
@router.get('/',response_model=List[userDB], status_code=201, dependencies=[Depends(is_logged), Depends(is_admin)])
|
|
async def get_users(request: Request):
|
|
|
|
return await crud.get_users()
|
|
|
|
# List user by id
|
|
@router.get('/{id}/',response_model=userDB, status_code=201, dependencies=[Depends(is_logged), Depends(is_admin)])
|
|
async def get_user_by_id(request: Request,id: int = Path(...,gt=0)):
|
|
user = await crud.get_user(id)
|
|
if not user:
|
|
raise HTTPException(status_code=404, detail="user not found")
|
|
return user
|
|
|
|
# Add a new user
|
|
@router.post("/add", response_model=userDB, status_code=201, dependencies=[Depends(is_logged), Depends(is_admin)])
|
|
async def create_user(payload: userSchema):
|
|
user = await is_a_user(payload)
|
|
if user is None:
|
|
pass
|
|
else:
|
|
raise HTTPException(status_code=424, detail="User already exists! ")
|
|
|
|
user_id = await crud.create_user(payload)
|
|
|
|
res = {
|
|
"id" : user_id,
|
|
"email" : payload.email,
|
|
"username" : payload.username
|
|
}
|
|
|
|
return res
|