forked from sr2/cloud-api
feat: delete endpoint queries
Delete endpoints do not fully support bodies. Queries used instead. Tests added. Resolves #20
This commit is contained in:
parent
e9b272811f
commit
c452c6c0d5
13 changed files with 114 additions and 57 deletions
|
|
@ -61,3 +61,16 @@ def get_perm_model_body(
|
|||
|
||||
|
||||
perm_model_body_dependency = Annotated[type[Permission], Depends(get_perm_model_body)]
|
||||
|
||||
|
||||
def get_perm_model_query(
|
||||
db: db_dependency, perm_id: Annotated[int, Query(gt=0)]
|
||||
) -> type[Permission]:
|
||||
perm_model = db.get(Permission, perm_id)
|
||||
if perm_model is None:
|
||||
raise PermNotFoundException(perm_id)
|
||||
|
||||
return perm_model
|
||||
|
||||
|
||||
perm_model_query_dependency = Annotated[type[Permission], Depends(get_perm_model_query)]
|
||||
|
|
|
|||
|
|
@ -31,7 +31,10 @@ from src.auth.dependencies import (
|
|||
super_admin_dependency,
|
||||
)
|
||||
from src.user.models import User
|
||||
from src.user.dependencies import user_model_body_dependency
|
||||
from src.user.dependencies import (
|
||||
user_model_body_dependency,
|
||||
user_model_query_dependency,
|
||||
)
|
||||
from src.organisation.models import Organisation as Org
|
||||
from src.service.models import Service
|
||||
|
||||
|
|
@ -46,6 +49,7 @@ from src.iam.dependencies import (
|
|||
group_model_query_dependency,
|
||||
group_model_body_dependency,
|
||||
perm_model_body_dependency,
|
||||
perm_model_query_dependency,
|
||||
)
|
||||
from src.iam.schemas import (
|
||||
IAMGetGroupPermissionsResponse,
|
||||
|
|
@ -57,14 +61,11 @@ from src.iam.schemas import (
|
|||
IAMPutGroupPermissionResponse,
|
||||
IAMPutGroupUserRequest,
|
||||
IAMPutGroupUserResponse,
|
||||
IAMDeleteGroupPermissionRequest,
|
||||
IAMDeleteGroupPermissionResponse,
|
||||
IAMDeleteGroupUserRequest,
|
||||
IAMDeleteGroupUserResponse,
|
||||
IAMGetPermissionsResponse,
|
||||
IAMPostPermissionRequest,
|
||||
IAMPostPermissionResponse,
|
||||
IAMDeletePermissionRequest,
|
||||
IAMGetPermissionsSearchRequest,
|
||||
IAMGetPermissionsSearchResponse,
|
||||
)
|
||||
|
|
@ -205,10 +206,9 @@ async def add_group_user(
|
|||
@router.delete("/group/permissions")
|
||||
async def remove_group_permissions(
|
||||
db: db_dependency,
|
||||
group_model: group_model_body_dependency,
|
||||
perm_model: perm_model_body_dependency,
|
||||
org_model: org_model_root_claim_body_dependency,
|
||||
request_model: IAMDeleteGroupPermissionRequest,
|
||||
group_model: group_model_query_dependency,
|
||||
perm_model: perm_model_query_dependency,
|
||||
org_model: org_model_root_claim_query_dependency,
|
||||
):
|
||||
if group_model.org_id != org_model.id:
|
||||
raise UnauthorizedException("Group does not belong to this organization")
|
||||
|
|
@ -226,10 +226,9 @@ async def remove_group_permissions(
|
|||
@router.delete("/group/user")
|
||||
async def remove_group_user(
|
||||
db: db_dependency,
|
||||
group_model: group_model_body_dependency,
|
||||
user_model: user_model_body_dependency,
|
||||
org_model: org_model_root_claim_body_dependency,
|
||||
request_model: IAMDeleteGroupUserRequest,
|
||||
group_model: group_model_query_dependency,
|
||||
user_model: user_model_query_dependency,
|
||||
org_model: org_model_root_claim_query_dependency,
|
||||
):
|
||||
if group_model.org_id != org_model.id:
|
||||
raise UnauthorizedException("Group does not belong to this organization")
|
||||
|
|
@ -285,8 +284,7 @@ async def create_new_permission(
|
|||
async def delete_permission(
|
||||
db: db_dependency,
|
||||
su: super_admin_dependency,
|
||||
perm_model: perm_model_body_dependency,
|
||||
request_model: IAMDeletePermissionRequest,
|
||||
perm_model: perm_model_query_dependency,
|
||||
):
|
||||
db.delete(perm_model)
|
||||
db.commit()
|
||||
|
|
|
|||
|
|
@ -81,19 +81,11 @@ class IAMPutGroupUserResponse(CustomBaseModel):
|
|||
users: list[UserSchema]
|
||||
|
||||
|
||||
class IAMDeleteGroupPermissionRequest(GroupIDMixin, PermIDMixin):
|
||||
pass
|
||||
|
||||
|
||||
class IAMDeleteGroupPermissionResponse(CustomBaseModel):
|
||||
group: GroupSchema
|
||||
permissions: list[PermissionSchema]
|
||||
|
||||
|
||||
class IAMDeleteGroupUserRequest(GroupIDMixin, UserIDMixin):
|
||||
pass
|
||||
|
||||
|
||||
class IAMDeleteGroupUserResponse(CustomBaseModel):
|
||||
group: GroupSchema
|
||||
users: list[UserSchema]
|
||||
|
|
@ -112,10 +104,6 @@ class IAMPostPermissionResponse(CustomBaseModel):
|
|||
permission: PermissionSchema
|
||||
|
||||
|
||||
class IAMDeletePermissionRequest(PermIDMixin):
|
||||
pass
|
||||
|
||||
|
||||
class IAMGetPermissionsSearchRequest(OrgIDMixin):
|
||||
service_id: Annotated[int | None, Field(gt=0)] = None
|
||||
resource: Optional[str] = None
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue