feat: org dependencies
Org endpoints use query/body model dependencies to perform initial db lookups. Issue #6 Org ID path params have been replaced with either query params (get endpoints) or body values. Resolves #10 Endpoints in other modules that rely on an org model lookup have also been updated.
This commit is contained in:
parent
c6a2b301dc
commit
657f91d73d
9 changed files with 106 additions and 74 deletions
|
|
@ -5,9 +5,7 @@ Endpoints:
|
|||
- List: Description
|
||||
- Endpoints: Description
|
||||
"""
|
||||
from typing import Annotated
|
||||
|
||||
from fastapi import APIRouter, Query, HTTPException, status
|
||||
from fastapi import APIRouter, HTTPException, status
|
||||
|
||||
from src.database import db_dependency
|
||||
from src.iam.schemas import IAMGetGroupPermissionsResponse, IAMGetGroupUsersResponse, IAMPostGroupRequest, \
|
||||
|
|
@ -21,7 +19,7 @@ from src.user.exceptions import UserNotFoundException
|
|||
from src.user.models import User
|
||||
from src.organisation.models import Organisation as Org
|
||||
from src.service.models import Service
|
||||
from src.organisation.dependencies import org_model_dependency
|
||||
from src.organisation.dependencies import org_model_body_dependency
|
||||
|
||||
from src.iam.service import service_key_dependency
|
||||
from src.iam.models import Permission as Perm, GroupPermissions as GPerms, Group, UserGroups
|
||||
|
|
@ -66,22 +64,22 @@ async def can_act_on_resource(valid_key: service_key_dependency, db: db_dependen
|
|||
|
||||
|
||||
@router.get("/group/permissions", response_model=IAMGetGroupPermissionsResponse)
|
||||
async def get_group_permissions(db: db_dependency, group_model: group_model_query_dependency):
|
||||
async def get_group_permissions(group_model: group_model_query_dependency):
|
||||
# TODO: root_user_dependency
|
||||
return {"permissions": group_model.permission_rel}
|
||||
|
||||
|
||||
@router.get("/group/users", response_model=IAMGetGroupUsersResponse)
|
||||
async def get_group_users(db: db_dependency, group_model: group_model_query_dependency):
|
||||
async def get_group_users(group_model: group_model_query_dependency):
|
||||
# TODO: root_user_dependency
|
||||
return {"users": group_model.user_rel}
|
||||
|
||||
|
||||
@router.post("/group", response_model=IAMPostGroupResponse)
|
||||
async def create_group(db: db_dependency, group_request: IAMPostGroupRequest, org_model: org_model_dependency, org_id: Annotated[int, Query(gt=0)]):
|
||||
async def create_group(db: db_dependency, request_model: IAMPostGroupRequest, org_model: org_model_body_dependency):
|
||||
# TODO: root_user_dependency
|
||||
# TODO: get org ID from dependency instead of query (needs updated dep first)
|
||||
group_model = Group(name=group_request.name, org_id=org_id)
|
||||
group_model = Group(name=request_model.name, org_id=org_model.id)
|
||||
|
||||
db.add(group_model)
|
||||
db.flush()
|
||||
|
|
@ -172,7 +170,7 @@ async def delete_permission(db: db_dependency, perm_model: perm_model_body_depen
|
|||
|
||||
@router.get("/permissions/search", response_model=IAMGetPermissionsSearchResponse)
|
||||
async def get_permissions(db: db_dependency, search: IAMGetPermissionsSearchRequest):
|
||||
# TODO: super_admin_dependency
|
||||
# TODO: root_user_dependency
|
||||
permission_query = db.query(Perm)
|
||||
|
||||
if search.service_id is not None:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue