permissions.py 1.60 KiB
from fastapi import APIRouter, Depends
from nacsos_data.models.projects import ProjectPermissionsModel
from nacsos_data.db.crud.projects import read_project_permissions_for_project, read_project_permissions_by_id
from server.data import db_engine
from server.util.security import UserPermissionChecker
from server.util.logging import get_logger
logger = get_logger('nacsos.api.route.project')
router = APIRouter()
@router.get('/me', response_model=ProjectPermissionsModel)
async def get_project_permissions_current_user(permission=Depends(UserPermissionChecker())) \
-> ProjectPermissionsModel:
return permission.permissions
@router.get('/list', response_model=list[ProjectPermissionsModel])
async def get_all_project_permissions(project_id: str, permission=Depends(UserPermissionChecker('owner'))) \
-> list[ProjectPermissionsModel] | None:
if permission:
return await read_project_permissions_for_project(project_id=project_id, engine=db_engine)
return None
@router.get('/{project_permission_id}', response_model=ProjectPermissionsModel)
async def get_project_permissions_by_id(project_permission_id: str,
permission=Depends(UserPermissionChecker('owner'))) \
-> ProjectPermissionsModel | None:
if permission:
return await read_project_permissions_by_id(permissions_id=project_permission_id, engine=db_engine)
return None
# TODO create project permissions (project owner and superuser only)
# TODO edit project permissions (project owner and superuser only)
# TODO delete project permissions (project owner and superuser only)