Ver código fonte

add register/login user

MrOzOn 5 anos atrás
pai
commit
68475c61e2
2 arquivos alterados com 28 adições e 2 exclusões
  1. 24 1
      apps/user/serializers.py
  2. 4 1
      healthdiarybackend/urls.py

+ 24 - 1
apps/user/serializers.py

@@ -1,6 +1,9 @@
 from django.contrib.auth import get_user_model
 from django.contrib.auth.models import User
 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()
 
@@ -13,16 +16,36 @@ class UserSerializer(serializers.HyperlinkedModelSerializer):
             username=validated_data['username']
         )
         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()
 
         return user
 
     class Meta:
         model = User
-        fields = ['url', 'username', 'email', 'groups', 'password']
+        fields = ['id', 'username', 'email', 'password', 'last_name', 'first_name', 'last_login']
 
 
 class CurrentUserSerializer(serializers.ModelSerializer):
     class Meta:
         model = User
         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
+        })

+ 4 - 1
healthdiarybackend/urls.py

@@ -21,6 +21,8 @@ from rest_framework import routers
 from apps.user import views as user_views
 from rest_framework.authtoken import views as authtoken_views
 
+from apps.user.serializers import CustomAuthToken
+
 router = routers.DefaultRouter()
 router.register(r'users', user_views.UserViewSet)
 
@@ -28,7 +30,8 @@ urlpatterns = [
     path('', include(router.urls)),
     path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
     path('admin/', admin.site.urls),
-    url(r'^api-token-auth/', authtoken_views.obtain_auth_token),
+    # url(r'^api-token-auth/', authtoken_views.obtain_auth_token),
+    url(r'^login/', CustomAuthToken.as_view()),
 
     url('^register/', user_views.CreateUserView.as_view(), name='register-user'),
     url('^who-am-i/', user_views.CurrentUserView.as_view(), name='who-am-i'),