Browse Source

adding apikey permissions

ShariX Developer 4 weeks ago
parent
commit
a4476dce00
2 changed files with 8 additions and 4 deletions
  1. 5 3
      api/views/ticket.py
  2. 3 1
      api/views/ticket_list.py

+ 5 - 3
api/views/ticket.py

@@ -1,15 +1,17 @@
 from rest_framework import generics, permissions, status
 from rest_framework.response import Response
+from rest_framework_api_key.permissions import HasAPIKey
 
 from tickets.api.permissions import UserTicketAccessPermission, UserTicketStatusAccessPermission
 from tickets.api.serializers import TicketDetailSerializer, TicketSerializer, TicketStatusSerializer
 from tickets.models import Ticket
 
+#TODO - maybe it's good idea to add concrete permission checks for handlers with API keys
 
 class TicketDetailAPIView(generics.RetrieveUpdateDestroyAPIView):
     queryset = Ticket.objects.all()
     serializer_class = TicketDetailSerializer
-    permission_classes = [permissions.IsAuthenticated & UserTicketAccessPermission]
+    permission_classes = [permissions.IsAuthenticated & UserTicketAccessPermission | HasAPIKey]
 
     def destroy(self, request, *args, **kwargs):
         instance = self.get_object()
@@ -20,7 +22,7 @@ class TicketDetailAPIView(generics.RetrieveUpdateDestroyAPIView):
 class TicketCreateAPIView(generics.CreateAPIView):
     queryset = Ticket.objects.all()
     serializer_class = TicketSerializer
-    permission_classes = [permissions.IsAuthenticated & UserTicketAccessPermission]
+    permission_classes = [permissions.IsAuthenticated & UserTicketAccessPermission | HasAPIKey]
 
     def perform_create(self, serializer):
         if serializer.is_valid():
@@ -30,4 +32,4 @@ class TicketCreateAPIView(generics.CreateAPIView):
 class TicketStatusAPIView(generics.RetrieveUpdateAPIView):
     queryset = Ticket.objects.all()
     serializer_class = TicketStatusSerializer
-    permission_classes = [permissions.IsAuthenticated & UserTicketStatusAccessPermission]
+    permission_classes = [permissions.IsAuthenticated & UserTicketStatusAccessPermission | HasAPIKey]

+ 3 - 1
api/views/ticket_list.py

@@ -1,13 +1,15 @@
 from django.shortcuts import get_object_or_404
 from rest_framework import generics, permissions
 
+from rest_framework_api_key.permissions import HasAPIKey
+
 from tickets.api.permissions import UserCanReadTicketListPermission
 from tickets.api.serializers import TicketListSerializer, TicketSerializer
 from tickets.models import Ticket, TicketList
 
 
 class TicketListListAPIView(generics.ListAPIView):
-    permission_classes = [permissions.IsAuthenticated]
+    permission_classes = [permissions.IsAuthenticated | HasAPIKey]
     serializer_class = TicketListSerializer
 
     def get_queryset(self):