Skip to content
Snippets Groups Projects
users.py 1.87 KiB
Newer Older
from fastapi import APIRouter, Depends, Query
from server.util.logging import get_logger
from nacsos_data.models.users import UserModel, UserInDBModel
from nacsos_data.db.crud.users import \
    read_all_users, \
    read_user_by_id, \
    read_users_by_ids, \
    read_project_users
from server.util.security import UserPermissionChecker, UserPermissions
from server.data import db_engine

logger = get_logger('nacsos.api.route.admin.users')
router = APIRouter()


# FIXME refine required permission
@router.get('/list/all', response_model=list[UserModel])
async def get_all_users(permissions: UserPermissions = Depends(UserPermissionChecker('annotations_edit'))) \
        -> list[UserInDBModel]:
    result = await read_all_users(engine=db_engine)
    return result


# FIXME refine required permission
@router.get('/list/project/{project_id}', response_model=list[UserModel])
Tim Repke's avatar
Tim Repke committed
async def get_project_users(project_id: str,
                            permissions: UserPermissions = Depends(UserPermissionChecker('annotations_edit'))) \
        -> list[UserInDBModel]:
    result = await read_project_users(project_id=project_id, engine=db_engine)
    return result


# FIXME refine required permission
@router.get('/details/{user_id}', response_model=UserModel)
async def get_user_by_id(user_id: str,
                         permissions: UserPermissions = Depends(UserPermissionChecker('annotations_edit'))) \
        -> UserInDBModel:
    result = await read_user_by_id(user_id=user_id, engine=db_engine)
    return result


# FIXME refine required permission
@router.get('/details', response_model=list[UserModel])
async def get_users_by_ids(user_id: list[str] = Query(),
                           permissions: UserPermissions = Depends(UserPermissionChecker('annotations_edit'))) \
        -> list[UserInDBModel]:
    result = await read_users_by_ids(user_ids=user_id, engine=db_engine)
    return result