++ doc, begin improving serializers
This commit is contained in:
parent
b16d484406
commit
d0a3cdce52
3 changed files with 29 additions and 1 deletions
10
README.md
10
README.md
|
@ -203,4 +203,14 @@ Don’t forget to point AUTH_USER_MODEL to it. Do this before creating any migra
|
||||||
- [ ] make settings adjustable by environment (?)
|
- [ ] make settings adjustable by environment (?)
|
||||||
- [ ] Remove hard coded JSON (?)
|
- [ ] Remove hard coded JSON (?)
|
||||||
|
|
||||||
|
|
||||||
|
### To document
|
||||||
|
|
||||||
|
* Login via username password interactively
|
||||||
|
* Login via name/realm/token rest
|
||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
|
### 0.5, 2018-11-18
|
||||||
|
|
||||||
|
* Require authentication on all rest endpoints by token
|
||||||
|
|
|
@ -13,7 +13,14 @@ class OTPSerializer(serializers.ModelSerializer):
|
||||||
validated_data['seed'] = pyotp.random_base32()
|
validated_data['seed'] = pyotp.random_base32()
|
||||||
return OTPSeed.objects.create(**validated_data)
|
return OTPSeed.objects.create(**validated_data)
|
||||||
|
|
||||||
class VerifySerializer(serializers.Serializer):
|
class VerifySerializerV1(serializers.Serializer):
|
||||||
|
"""
|
||||||
|
This is the first version of the serializer that would authenticate the request
|
||||||
|
itself. This is not necessary anymore starting from version 0.5
|
||||||
|
|
||||||
|
Code to be removed prior to 1.0
|
||||||
|
"""
|
||||||
|
|
||||||
name = serializers.CharField(max_length=128)
|
name = serializers.CharField(max_length=128)
|
||||||
token = serializers.CharField(max_length=128)
|
token = serializers.CharField(max_length=128)
|
||||||
realm = serializers.CharField(max_length=128)
|
realm = serializers.CharField(max_length=128)
|
||||||
|
@ -62,6 +69,10 @@ class TokenSerializer(serializers.Serializer):
|
||||||
token = serializers.CharField(max_length=128)
|
token = serializers.CharField(max_length=128)
|
||||||
realm = serializers.CharField(max_length=128)
|
realm = serializers.CharField(max_length=128)
|
||||||
|
|
||||||
|
token_name = 'token'
|
||||||
|
name_name = 'name'
|
||||||
|
realm_name = 'realm'
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
token_in = self.validated_data.get('token')
|
token_in = self.validated_data.get('token')
|
||||||
name_in = self.validated_data.get('name')
|
name_in = self.validated_data.get('name')
|
||||||
|
@ -79,3 +90,8 @@ class TokenSerializer(serializers.Serializer):
|
||||||
raise exceptions.AuthenticationFailed()
|
raise exceptions.AuthenticationFailed()
|
||||||
|
|
||||||
return (db_instance, token_in)
|
return (db_instance, token_in)
|
||||||
|
|
||||||
|
class VerifySerializer(TokenSerializer):
|
||||||
|
token_name = 'verifytoken'
|
||||||
|
name_name = 'verifyname'
|
||||||
|
realm_name = 'verifyrealm'
|
||||||
|
|
|
@ -11,6 +11,7 @@ from django.http import HttpResponse, JsonResponse
|
||||||
from otpauth.serializer import VerifySerializer, OTPSerializer
|
from otpauth.serializer import VerifySerializer, OTPSerializer
|
||||||
from otpauth.models import OTPSeed
|
from otpauth.models import OTPSeed
|
||||||
|
|
||||||
|
# Version 2 model - model based ++ verify action
|
||||||
class OTPVerifyViewSet(viewsets.ModelViewSet):
|
class OTPVerifyViewSet(viewsets.ModelViewSet):
|
||||||
serializer_class = OTPSerializer
|
serializer_class = OTPSerializer
|
||||||
queryset = OTPSeed.objects.all()
|
queryset = OTPSeed.objects.all()
|
||||||
|
@ -26,6 +27,7 @@ class OTPVerifyViewSet(viewsets.ModelViewSet):
|
||||||
return JsonResponse(serializer.errors, status=400)
|
return JsonResponse(serializer.errors, status=400)
|
||||||
|
|
||||||
|
|
||||||
|
# Version 1 model - should be removed
|
||||||
class VerifyViewSet(viewsets.ViewSet):
|
class VerifyViewSet(viewsets.ViewSet):
|
||||||
serializer_class = VerifySerializer
|
serializer_class = VerifySerializer
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue