Spaces:
Paused
Paused
from typing import Annotated, List | |
from sqlalchemy.orm import Session | |
from fastapi import APIRouter, Depends, HTTPException | |
from app.db import get_db | |
from app.core import schemas, crud | |
from app.security import get_current_user | |
router = APIRouter() | |
def create_user( | |
user: schemas.UserCreate, | |
db: Annotated[Session, Depends(get_db)], | |
current_user: Annotated[schemas.User, Depends(get_current_user)], | |
): | |
if not current_user.is_superuser: | |
raise HTTPException(status_code=403, detail="Forbidden") | |
user_exists = crud.get_user_by_username(username=user.username, db=db) | |
if user_exists: | |
raise HTTPException(status_code=400, detail="Username already registered") | |
return crud.create_user(user=user, db=db) | |
def update_user( | |
user: schemas.UserUpdate, | |
db: Annotated[Session, Depends(get_db)], | |
current_user: Annotated[schemas.User, Depends(get_current_user)], | |
): | |
if not current_user.is_superuser: | |
raise HTTPException(status_code=403, detail="Forbidden") | |
user_exists = crud.get_user_by_user_id(user_id=user.user_id, db=db) | |
if not user_exists: | |
raise HTTPException(status_code=404, detail="User not found") | |
return crud.update_user(user=user, db=db) | |
def get_all_users( | |
db: Annotated[Session, Depends(get_db)], | |
current_user: Annotated[schemas.User, Depends(get_current_user)], | |
): | |
if not current_user.is_superuser: | |
raise HTTPException(status_code=403, detail="Forbidden") | |
return crud.get_all_users(db=db) | |
def get_user_by_user_id( | |
user_id: int, | |
db: Annotated[Session, Depends(get_db)], | |
current_user: Annotated[schemas.User, Depends(get_current_user)], | |
): | |
if not current_user.is_superuser: | |
raise HTTPException(status_code=403, detail="Forbidden") | |
user = crud.get_user_by_user_id(user_id=user_id, db=db) | |
if user is None: | |
raise HTTPException(status_code=404, detail="User not found") | |
return user | |