1
0
Эх сурвалжийг харах

adding apikey permissions

ShariX Developer 1 сар өмнө
parent
commit
a4476dce00

+ 5 - 3
api/views/ticket.py

@@ -1,15 +1,17 @@
 from rest_framework import generics, permissions, status
 from rest_framework import generics, permissions, status
 from rest_framework.response import Response
 from rest_framework.response import Response
+from rest_framework_api_key.permissions import HasAPIKey
 
 
 from tickets.api.permissions import UserTicketAccessPermission, UserTicketStatusAccessPermission
 from tickets.api.permissions import UserTicketAccessPermission, UserTicketStatusAccessPermission
 from tickets.api.serializers import TicketDetailSerializer, TicketSerializer, TicketStatusSerializer
 from tickets.api.serializers import TicketDetailSerializer, TicketSerializer, TicketStatusSerializer
 from tickets.models import Ticket
 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):
 class TicketDetailAPIView(generics.RetrieveUpdateDestroyAPIView):
     queryset = Ticket.objects.all()
     queryset = Ticket.objects.all()
     serializer_class = TicketDetailSerializer
     serializer_class = TicketDetailSerializer
-    permission_classes = [permissions.IsAuthenticated & UserTicketAccessPermission]
+    permission_classes = [permissions.IsAuthenticated & UserTicketAccessPermission | HasAPIKey]
 
 
     def destroy(self, request, *args, **kwargs):
     def destroy(self, request, *args, **kwargs):
         instance = self.get_object()
         instance = self.get_object()
@@ -20,7 +22,7 @@ class TicketDetailAPIView(generics.RetrieveUpdateDestroyAPIView):
 class TicketCreateAPIView(generics.CreateAPIView):
 class TicketCreateAPIView(generics.CreateAPIView):
     queryset = Ticket.objects.all()
     queryset = Ticket.objects.all()
     serializer_class = TicketSerializer
     serializer_class = TicketSerializer
-    permission_classes = [permissions.IsAuthenticated & UserTicketAccessPermission]
+    permission_classes = [permissions.IsAuthenticated & UserTicketAccessPermission | HasAPIKey]
 
 
     def perform_create(self, serializer):
     def perform_create(self, serializer):
         if serializer.is_valid():
         if serializer.is_valid():
@@ -30,4 +32,4 @@ class TicketCreateAPIView(generics.CreateAPIView):
 class TicketStatusAPIView(generics.RetrieveUpdateAPIView):
 class TicketStatusAPIView(generics.RetrieveUpdateAPIView):
     queryset = Ticket.objects.all()
     queryset = Ticket.objects.all()
     serializer_class = TicketStatusSerializer
     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 django.shortcuts import get_object_or_404
 from rest_framework import generics, permissions
 from rest_framework import generics, permissions
 
 
+from rest_framework_api_key.permissions import HasAPIKey
+
 from tickets.api.permissions import UserCanReadTicketListPermission
 from tickets.api.permissions import UserCanReadTicketListPermission
 from tickets.api.serializers import TicketListSerializer, TicketSerializer
 from tickets.api.serializers import TicketListSerializer, TicketSerializer
 from tickets.models import Ticket, TicketList
 from tickets.models import Ticket, TicketList
 
 
 
 
 class TicketListListAPIView(generics.ListAPIView):
 class TicketListListAPIView(generics.ListAPIView):
-    permission_classes = [permissions.IsAuthenticated]
+    permission_classes = [permissions.IsAuthenticated | HasAPIKey]
     serializer_class = TicketListSerializer
     serializer_class = TicketListSerializer
 
 
     def get_queryset(self):
     def get_queryset(self):