from django.shortcuts import render from rest_framework import viewsets, serializers from rest_framework.decorators import action from rest_framework.response import Response from django.http import JsonResponse from otpauth.serializer import VerifySerializer, OTPSerializer, TokenSerializer from otpauth.models import OTPSeed import json import logging logger = logging.getLogger(__name__) class OTPVerifyViewSet(viewsets.ModelViewSet): serializer_class = OTPSerializer queryset = OTPSeed.objects.all() @action(detail=False, methods=['post']) def verify(self, request): """the standard serializer above already verified that (name, realm, token) is valid. Now we inspect the payload and return ok, if they also verify """ logger.debug("in verify {}".format(json.dumps(request.data))) serializer = VerifySerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response({'status': 'OK'}) return JsonResponse(serializer.errors, status=400)