From 10d33ccd9ccae4c148e63cf5a6b270f0653fc4c1 Mon Sep 17 00:00:00 2001 From: manuconcepbrito <manu041196@gmail.com> Date: Thu, 14 Oct 2021 14:33:17 +0200 Subject: [PATCH] add authentication_classes for views --- wahlfang_api/serializers.py | 1 + wahlfang_api/urls.py | 2 +- wahlfang_api/views.py | 23 ++++++++++------------- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/wahlfang_api/serializers.py b/wahlfang_api/serializers.py index 5104492..956a29d 100644 --- a/wahlfang_api/serializers.py +++ b/wahlfang_api/serializers.py @@ -4,6 +4,7 @@ from rest_framework import serializers from rest_framework_simplejwt.serializers import TokenObtainPairSerializer from rest_framework_simplejwt.tokens import RefreshToken + from vote.models import Election, Session, Application, Voter diff --git a/wahlfang_api/urls.py b/wahlfang_api/urls.py index 3d04b19..fe69745 100644 --- a/wahlfang_api/urls.py +++ b/wahlfang_api/urls.py @@ -18,7 +18,6 @@ app_name = 'rest_api' router = routers.SimpleRouter() router.register('vote/elections', ElectionViewset) -router.register('management/add-session', ManagerSessionView) urlpatterns = [ path('', include(router.urls)), @@ -28,5 +27,6 @@ urlpatterns = [ path('auth/token/', TokenObtainElectionManagerView.as_view(), name='token_obtain_pair'), path('auth/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'), path('auth/token/verify/', TokenVerifyView.as_view(), name='token_verify'), + path('management/add-session', ManagerSessionView.as_view(), name='add_session'), path('drf/', include('rest_framework.urls', namespace='rest_framework')) ] diff --git a/wahlfang_api/views.py b/wahlfang_api/views.py index c49f872..85e8fbe 100644 --- a/wahlfang_api/views.py +++ b/wahlfang_api/views.py @@ -9,7 +9,8 @@ from rest_framework_simplejwt.views import TokenViewBase from vote.forms import VoteForm from management.forms import AddSessionForm from vote.models import Election, Voter, Application, Session -from wahlfang_api.authentication import IsVoter +from wahlfang_api.authentication import IsVoter, IsElectionManager, ElectionManagerJWTAuthentication, \ + VoterJWTAuthentication from wahlfang_api.serializers import ( TokenObtainVoterSerializer, TokenObtainElectionManagerSerializer, @@ -40,6 +41,7 @@ class TokenObtainElectionManagerView(TokenViewBase): class VoterInfoView(generics.RetrieveAPIView): + authentication_classes = [VoterJWTAuthentication] queryset = Voter.objects.all() permission_classes = [IsVoter] serializer_class = VoterDetailSerializer @@ -56,23 +58,18 @@ class SpectatorView(generics.RetrieveAPIView): return self.queryset.get(spectator_token=self.kwargs['uuid']) -class ManagerSessionView(generics.RetrieveAPIView): +class ManagerSessionView(generics.ListCreateAPIView): + authentication_classes = [ElectionManagerJWTAuthentication] queryset = Session.objects.all() + permission_classes = [IsElectionManager] + serializer_class = SessionSerializer - @action(detail=True, methods=['post']) - def create_session(self, request): - user = self.request.user.pk - - form = AddSessionForm(request, user, data=request.data) - if form.is_valid(): - form.save() - return Response(status=status.HTTP_204_NO_CONTENT) - - return Response(data=form.errors, status=status.HTTP_400_BAD_REQUEST) - + def perform_create(self, serializer_class): + serializer_class.save() class ElectionViewset(viewsets.ReadOnlyModelViewSet): + authentication_classes = [VoterJWTAuthentication] queryset = Election.objects.all() permission_classes = [IsVoter] serializer_class = ElectionSerializer -- GitLab