aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/authtoken
diff options
context:
space:
mode:
Diffstat (limited to 'rest_framework/authtoken')
-rw-r--r--rest_framework/authtoken/serializers.py15
-rw-r--r--rest_framework/authtoken/urls.py5
-rw-r--r--rest_framework/authtoken/views.py27
3 files changed, 18 insertions, 29 deletions
diff --git a/rest_framework/authtoken/serializers.py b/rest_framework/authtoken/serializers.py
index 8e0128c1..a5ed6e6d 100644
--- a/rest_framework/authtoken/serializers.py
+++ b/rest_framework/authtoken/serializers.py
@@ -1,12 +1,8 @@
from django.contrib.auth import authenticate
-
from rest_framework import serializers
-from rest_framework.authtoken.models import Token
-
class AuthTokenSerializer(serializers.Serializer):
- token = serializers.Field(source="key")
- username = serializers.CharField(max_length=30)
+ username = serializers.CharField()
password = serializers.CharField()
def validate(self, attrs):
@@ -26,12 +22,3 @@ class AuthTokenSerializer(serializers.Serializer):
else:
raise serializers.ValidationError('Must include "username" and "password"')
- def convert_object(self, obj):
- ret = self._dict_class()
- ret['token'] = obj.key
- ret['user'] = obj.user.id
- return ret
-
- def restore_object(self, attrs, instance=None):
- token, created = Token.objects.get_or_create(user=attrs['user'])
- return token
diff --git a/rest_framework/authtoken/urls.py b/rest_framework/authtoken/urls.py
index 8bea46c0..87872136 100644
--- a/rest_framework/authtoken/urls.py
+++ b/rest_framework/authtoken/urls.py
@@ -13,9 +13,8 @@ your authentication settings include `TokenAuthentication`.
)
"""
from django.conf.urls.defaults import patterns, url
-from rest_framework.authtoken.views import AuthTokenLoginView, AuthTokenLogoutView
+from rest_framework.authtoken.views import AuthTokenView
urlpatterns = patterns('rest_framework.authtoken.views',
- url(r'^login/$', AuthTokenLoginView.as_view(), name='token_login'),
- url(r'^logout/$', AuthTokenLogoutView.as_view(), name='token_logout'),
+ url(r'^login/$', AuthTokenView.as_view(), name='token_login'),
)
diff --git a/rest_framework/authtoken/views.py b/rest_framework/authtoken/views.py
index a52f0a77..e027dff1 100644
--- a/rest_framework/authtoken/views.py
+++ b/rest_framework/authtoken/views.py
@@ -1,19 +1,22 @@
from rest_framework.views import APIView
-from rest_framework.generics import CreateAPIView
+from rest_framework import status
+from rest_framework import parsers
+from rest_framework import renderers
+from rest_framework.response import Response
from rest_framework.authtoken.models import Token
from rest_framework.authtoken.serializers import AuthTokenSerializer
-from django.http import HttpResponse
-class AuthTokenLoginView(CreateAPIView):
+class AuthTokenView(APIView):
+ throttle_classes = ()
+ permission_classes = ()
+ parser_classes = (parsers.FormParser, parsers.MultiPartParser, parsers.JSONParser,)
+ renderer_classes = (renderers.JSONRenderer,)
model = Token
- serializer_class = AuthTokenSerializer
-
-class AuthTokenLogoutView(APIView):
def post(self, request):
- if request.user.is_authenticated() and request.auth:
- request.auth.delete()
- return HttpResponse("logged out")
- else:
- return HttpResponse("not logged in")
-
+ serializer = AuthTokenSerializer(data=request.DATA)
+ if serializer.is_valid():
+ token, created = Token.objects.get_or_create(user=serializer.object['user'])
+ return Response({'token': token.key})
+ return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
+