diff --git a/apps/api/plane/app/views/project/base.py b/apps/api/plane/app/views/project/base.py index d1bd9926c8..6848195afa 100644 --- a/apps/api/plane/app/views/project/base.py +++ b/apps/api/plane/app/views/project/base.py @@ -545,7 +545,7 @@ class DeployBoardViewSet(BaseViewSet): # ProjectMemberPermission only checks the URL slug/project_id — nothing # binds the object to that scope. Scope the queryset to the URL workspace # + project so a foreign pk 404s instead of being read/modified/deleted - # cross-workspace (GHSA-h4w5-vhxc-265g). + # cross-workspace. return DeployBoard.objects.filter( workspace__slug=self.kwargs.get("slug"), entity_name="project", diff --git a/apps/api/plane/tests/contract/app/test_deploy_board_cross_workspace_scope_app.py b/apps/api/plane/tests/contract/app/test_deploy_board_cross_workspace_scope_app.py index 10ee6faef1..327cf84e1e 100644 --- a/apps/api/plane/tests/contract/app/test_deploy_board_cross_workspace_scope_app.py +++ b/apps/api/plane/tests/contract/app/test_deploy_board_cross_workspace_scope_app.py @@ -4,7 +4,7 @@ """Contract tests for DeployBoardViewSet object scoping. -Regression coverage for GHSA-h4w5-vhxc-265g. ``DeployBoardViewSet`` defines only +``DeployBoardViewSet`` defines only ``list``/``create``; the routed ``retrieve``/``partial_update``/``destroy`` fall through to DRF's ``ModelViewSet`` defaults, which resolve the object via ``get_object()`` -> ``get_queryset()``. The base ``get_queryset`` returns