Spaces:
Runtime error
Runtime error
""" | |
Router for managing users (staff, admins). | |
""" | |
from fastapi import APIRouter, Depends, HTTPException, status | |
from fastapi.concurrency import run_in_threadpool | |
from sqlalchemy.orm import Session | |
from typing import List | |
from src import crud, models | |
from src.database import get_db | |
from src.auth import get_current_active_user, get_current_active_admin_user_from_token | |
router = APIRouter( | |
prefix="/api/users", | |
tags=["Users"], | |
) | |
async def create_new_user(user: models.UserCreate, db: Session = Depends(get_db)): | |
""" | |
Admin: Create a new user (staff or admin). | |
""" | |
db_user = await run_in_threadpool(crud.get_user_by_username, db, user.username) | |
if db_user: | |
raise HTTPException(status_code=400, detail="Username already registered") | |
return await run_in_threadpool(crud.create_user, db, user) | |
async def read_users(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)): | |
""" | |
Admin: Retrieve a list of all users. | |
""" | |
users = await crud.get_all_users(db, skip=skip, limit=limit) # Assumes get_all_users exists in crud.users | |
return users | |
async def get_all_users(db: Session = Depends(get_db)): | |
""" | |
Admin: Get a list of all users. | |
""" | |
users = await run_in_threadpool(crud.get_all_users, db) | |
return users | |
async def read_users_me(current_user: models.User = Depends(get_current_active_user)): | |
""" | |
Get profile information for the currently authenticated user. | |
""" | |
return current_user | |