users.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from fastapi import Response
  2. from fastapi import Depends, FastAPI, HTTPException, status
  3. from datetime import datetime, timedelta
  4. from typing import List, Union, Optional
  5. from fastapi import APIRouter
  6. from pydantic import BaseModel
  7. import time
  8. import uuid
  9. from apps.web.models.users import UserModel, UserRoleUpdateForm, Users
  10. from utils.utils import get_current_user
  11. from constants import ERROR_MESSAGES
  12. router = APIRouter()
  13. ############################
  14. # GetUsers
  15. ############################
  16. @router.get("/", response_model=List[UserModel])
  17. async def get_users(skip: int = 0, limit: int = 50, user=Depends(get_current_user)):
  18. if user.role != "admin":
  19. raise HTTPException(
  20. status_code=status.HTTP_403_FORBIDDEN,
  21. detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
  22. )
  23. return Users.get_users(skip, limit)
  24. ############################
  25. # UpdateUserRole
  26. ############################
  27. @router.post("/update/role", response_model=Optional[UserModel])
  28. async def update_user_role(
  29. form_data: UserRoleUpdateForm, user=Depends(get_current_user)
  30. ):
  31. if user.role != "admin":
  32. raise HTTPException(
  33. status_code=status.HTTP_403_FORBIDDEN,
  34. detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
  35. )
  36. if user.id != form_data.id:
  37. return Users.update_user_role_by_id(form_data.id, form_data.role)
  38. else:
  39. raise HTTPException(
  40. status_code=status.HTTP_403_FORBIDDEN,
  41. detail=ERROR_MESSAGES.ACTION_PROHIBITED,
  42. )