Skip to content

Commit 650af50

Browse files
committed
remove orphaned AssetGroup V3 API ViewSet, serializer, filter, and permission
Same shape as the AssetMember removal: the asset_groups route was never registered with v2_api (punted to pro/product_groups). The AssetGroupViewSet, AssetGroupSerializer, AssetGroupFilterSet, and UserHasAssetGroupPermission classes have lived on as dead code that touches the Product_Group RBAC model. Drop them along with their now-unused imports (Product_Group, get_authorized_product_groups, user_has_permission, PermissionDenied, ValidationError).
1 parent c579a07 commit 650af50

4 files changed

Lines changed: 0 additions & 102 deletions

File tree

dojo/asset/api/filters.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
from drf_spectacular.types import OpenApiTypes
44
from drf_spectacular.utils import extend_schema_field
55

6-
from dojo.authorization.models import (
7-
Product_Group,
8-
)
96
from dojo.filters import (
107
CharFieldFilterANDExpression,
118
CharFieldInFilter,
@@ -107,9 +104,3 @@ class ApiAssetFilter(DojoFilter):
107104
)
108105

109106

110-
class AssetGroupFilterSet(FilterSet):
111-
asset_id = NumberFilter(field_name="product_id")
112-
113-
class Meta:
114-
model = Product_Group
115-
fields = ("id", "group_id")

dojo/asset/api/serializers.py

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
from rest_framework import serializers
2-
from rest_framework.exceptions import PermissionDenied, ValidationError
32

43
from dojo.api_v2.serializers import ProductMetaSerializer, TagListSerializerField
5-
from dojo.authorization.authorization import user_has_permission
6-
from dojo.authorization.models import (
7-
Product_Group,
8-
)
94
from dojo.models import (
105
Dojo_User,
116
Product,
@@ -80,44 +75,3 @@ def get_findings_list(self, obj) -> list[int]:
8075
return obj.open_findings_list()
8176

8277

83-
class AssetGroupSerializer(serializers.ModelSerializer):
84-
asset = RelatedAssetField(source="product")
85-
86-
class Meta:
87-
model = Product_Group
88-
exclude = ("product",)
89-
90-
def validate(self, data):
91-
if (
92-
self.instance is not None
93-
and data.get("asset") != self.instance.product
94-
and not user_has_permission(
95-
self.context["request"].user,
96-
data.get("asset"),
97-
"add",
98-
)
99-
):
100-
msg = "You are not permitted to add a group to this Asset"
101-
raise PermissionDenied(msg)
102-
103-
if (
104-
self.instance is None
105-
or data.get("asset") != self.instance.product
106-
or data.get("group") != self.instance.group
107-
):
108-
members = Product_Group.objects.filter(
109-
product=data.get("asset"), group=data.get("group"),
110-
)
111-
if members.count() > 0:
112-
msg = "Asset Group already exists"
113-
raise ValidationError(msg)
114-
115-
if data.get("role").is_owner and not user_has_permission(
116-
self.context["request"].user,
117-
data.get("asset"),
118-
"staff_only",
119-
):
120-
msg = "You are not permitted to add a group as Owner to this Asset"
121-
raise PermissionDenied(msg)
122-
123-
return data

dojo/asset/api/views.py

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,14 @@
1313
from dojo.asset.api.filters import (
1414
ApiAssetFilter,
1515
AssetAPIScanConfigurationFilterSet,
16-
AssetGroupFilterSet,
1716
)
1817
from dojo.authorization import api_permissions as permissions
19-
from dojo.authorization.models import (
20-
Product_Group,
21-
)
2218
from dojo.models import (
2319
Product,
2420
Product_API_Scan_Configuration,
2521
)
2622
from dojo.product.queries import (
2723
get_authorized_product_api_scan_configurations,
28-
get_authorized_product_groups,
2924
get_authorized_products,
3025
)
3126
from dojo.utils import async_delete, get_setting
@@ -126,29 +121,3 @@ def generate_report(self, request, pk=None):
126121
return Response(report.data)
127122

128123

129-
# Authorization: object-based
130-
@extend_schema_view(**schema_with_prefetch())
131-
class AssetGroupViewSet(
132-
PrefetchDojoModelViewSet,
133-
):
134-
serializer_class = serializers.AssetGroupSerializer
135-
queryset = Product_Group.objects.none()
136-
filter_backends = (DjangoFilterBackend,)
137-
filterset_class = AssetGroupFilterSet
138-
permission_classes = (
139-
IsAuthenticated,
140-
permissions.UserHasAssetGroupPermission,
141-
)
142-
143-
def get_queryset(self):
144-
return get_authorized_product_groups(
145-
"view",
146-
).distinct()
147-
148-
@extend_schema(
149-
exclude=True,
150-
)
151-
def partial_update(self, request, pk=None):
152-
# Object authorization won't work if not all data is provided
153-
response = {"message": "Patch function is not offered in this path."}
154-
return Response(response, status=status.HTTP_405_METHOD_NOT_ALLOWED)

dojo/authorization/api_permissions.py

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -535,22 +535,6 @@ def has_object_permission(self, request, view, obj):
535535
)
536536

537537

538-
class UserHasAssetGroupPermission(permissions.BasePermission):
539-
def has_permission(self, request, view):
540-
return check_post_permission(
541-
request, Product, "asset", "add",
542-
)
543-
544-
def has_object_permission(self, request, view, obj):
545-
return check_object_permission(
546-
request,
547-
obj,
548-
"view",
549-
"edit",
550-
"delete",
551-
)
552-
553-
554538
class UserHasProductTypePermission(permissions.BasePermission):
555539
def has_permission(self, request, view):
556540
if request.method == "POST":

0 commit comments

Comments
 (0)