|
@@ -1,6 +1,9 @@
|
|
|
from django.contrib.auth import get_user_model
|
|
from django.contrib.auth import get_user_model
|
|
|
from django.contrib.auth.models import User
|
|
from django.contrib.auth.models import User
|
|
|
from rest_framework import serializers
|
|
from rest_framework import serializers
|
|
|
|
|
+from rest_framework.authtoken.models import Token
|
|
|
|
|
+from rest_framework.authtoken.views import ObtainAuthToken
|
|
|
|
|
+from rest_framework.response import Response
|
|
|
|
|
|
|
|
UserModel = get_user_model()
|
|
UserModel = get_user_model()
|
|
|
|
|
|
|
@@ -13,16 +16,36 @@ class UserSerializer(serializers.HyperlinkedModelSerializer):
|
|
|
username=validated_data['username']
|
|
username=validated_data['username']
|
|
|
)
|
|
)
|
|
|
user.set_password(validated_data['password'])
|
|
user.set_password(validated_data['password'])
|
|
|
|
|
+ user.email = validated_data['username']
|
|
|
|
|
+ user.last_name = self.initial_data['last_name']
|
|
|
|
|
+ user.first_name = self.initial_data['first_name']
|
|
|
user.save()
|
|
user.save()
|
|
|
|
|
|
|
|
return user
|
|
return user
|
|
|
|
|
|
|
|
class Meta:
|
|
class Meta:
|
|
|
model = User
|
|
model = User
|
|
|
- fields = ['url', 'username', 'email', 'groups', 'password']
|
|
|
|
|
|
|
+ fields = ['id', 'username', 'email', 'password', 'last_name', 'first_name', 'last_login']
|
|
|
|
|
|
|
|
|
|
|
|
|
class CurrentUserSerializer(serializers.ModelSerializer):
|
|
class CurrentUserSerializer(serializers.ModelSerializer):
|
|
|
class Meta:
|
|
class Meta:
|
|
|
model = User
|
|
model = User
|
|
|
fields = ['id', 'username', 'email', 'first_name', 'last_name', 'last_login']
|
|
fields = ['id', 'username', 'email', 'first_name', 'last_name', 'last_login']
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+class CustomAuthToken(ObtainAuthToken):
|
|
|
|
|
+
|
|
|
|
|
+ def post(self, request, *args, **kwargs):
|
|
|
|
|
+ serializer = self.serializer_class(data=request.data,
|
|
|
|
|
+ context={'request': request})
|
|
|
|
|
+ serializer.is_valid(raise_exception=True)
|
|
|
|
|
+ user = serializer.validated_data['user']
|
|
|
|
|
+ token, created = Token.objects.get_or_create(user=user)
|
|
|
|
|
+ return Response({
|
|
|
|
|
+ 'token': token.key,
|
|
|
|
|
+ 'user_id': user.pk,
|
|
|
|
|
+ 'email': user.email,
|
|
|
|
|
+ 'last_name': user.last_name,
|
|
|
|
|
+ 'first_name': user.first_name
|
|
|
|
|
+ })
|