ungleich-otp/otpauth/views.py

35 lines
1.1 KiB
Python
Raw Permalink Normal View History

2018-10-26 19:08:01 +00:00
from django.shortcuts import render
2018-11-17 21:15:17 +00:00
2018-12-30 21:41:17 +00:00
from rest_framework import viewsets, serializers
2018-11-17 21:15:17 +00:00
from rest_framework.decorators import action
from rest_framework.response import Response
2018-11-18 12:42:16 +00:00
from django.http import JsonResponse
from otpauth.serializer import VerifySerializer, OTPSerializer, TokenSerializer
from otpauth.models import OTPSeed
2019-02-11 00:06:21 +00:00
import json
import logging
logger = logging.getLogger(__name__)
2018-11-17 10:39:42 +00:00
class OTPVerifyViewSet(viewsets.ModelViewSet):
2018-12-30 21:51:34 +00:00
serializer_class = OTPSerializer
queryset = OTPSeed.objects.all()
2018-11-17 17:48:12 +00:00
2018-11-17 21:15:17 +00:00
@action(detail=False, methods=['post'])
def verify(self, request):
2018-12-24 19:58:08 +00:00
"""the standard serializer above already verified that
(name, realm, token) is valid.
Now we inspect the payload and return ok,
2018-12-24 19:58:08 +00:00
if they also verify
"""
2019-02-11 00:06:21 +00:00
logger.debug("in verify {}".format(json.dumps(request.data)))
2018-11-17 21:15:17 +00:00
serializer = VerifySerializer(data=request.data)
if serializer.is_valid():
2018-11-17 21:53:51 +00:00
serializer.save()
2018-11-17 21:15:17 +00:00
return Response({'status': 'OK'})
return JsonResponse(serializer.errors, status=400)