2222from vulnerabilities .models import Vulnerability
2323from vulnerabilities .models import VulnerabilityReference
2424from vulnerabilities .models import VulnerabilitySeverity
25+ from vulnerablecode .auth import ConditionalLoginRequired
2526
2627
2728class VulnerabilitySeveritySerializer (serializers .ModelSerializer ):
@@ -30,6 +31,10 @@ class Meta:
3031 fields = ["value" , "scoring_system" ]
3132
3233
34+ class AuthenticatedAPIViewSet (ConditionalLoginRequired , viewsets .ReadOnlyModelViewSet ):
35+ pass
36+
37+
3338class VulnerabilityReferenceSerializer (serializers .ModelSerializer ):
3439 scores = VulnerabilitySeveritySerializer (many = True , source = "vulnerabilityseverity_set" )
3540 reference_url = serializers .CharField (source = "url" )
@@ -206,7 +211,7 @@ def filter_purl(self, queryset, name, value):
206211 return self .queryset .filter (** attrs )
207212
208213
209- class PackageViewSet (viewsets . ReadOnlyModelViewSet ):
214+ class PackageViewSet (AuthenticatedAPIViewSet ):
210215 queryset = Package .objects .all ()
211216 serializer_class = PackageSerializer
212217 filter_backends = (filters .DjangoFilterBackend ,)
@@ -253,7 +258,7 @@ class Meta:
253258 fields = ["vulnerability_id" ]
254259
255260
256- class VulnerabilityViewSet (viewsets . ReadOnlyModelViewSet ):
261+ class VulnerabilityViewSet (AuthenticatedAPIViewSet ):
257262 def get_fixed_packages_qs (self ):
258263 """
259264 Filter the packages that fixes a vulnerability
@@ -295,7 +300,7 @@ def filter_cpe(self, queryset, name, value):
295300 return self .queryset .filter (vulnerabilityreference__reference_id__startswith = cpe ).distinct ()
296301
297302
298- class CPEViewSet (viewsets . ReadOnlyModelViewSet ):
303+ class CPEViewSet (AuthenticatedAPIViewSet ):
299304 queryset = Vulnerability .objects .filter (
300305 vulnerabilityreference__reference_id__startswith = "cpe"
301306 ).distinct ()
@@ -336,7 +341,7 @@ def filter_alias(self, queryset, name, value):
336341 return self .queryset .filter (aliases__alias__icontains = alias )
337342
338343
339- class AliasViewSet (viewsets . ReadOnlyModelViewSet ):
344+ class AliasViewSet (AuthenticatedAPIViewSet ):
340345 queryset = Vulnerability .objects .all ()
341346 serializer_class = VulnerabilitySerializer
342347 filter_backends = (filters .DjangoFilterBackend ,)
0 commit comments