From d8dbb1ccdcff6aef455533463a192c5ddadefb02 Mon Sep 17 00:00:00 2001 From: Andrew Buss Date: Fri, 1 May 2015 07:58:28 -0700 Subject: [PATCH] fixed signup, login - was not passing in password to create_user --- flashcards/api.py | 40 +++++++++++++++++++++------------------- flashy/settings.py | 1 + 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/flashcards/api.py b/flashcards/api.py index 3bc9bca..af286ba 100644 --- a/flashcards/api.py +++ b/flashcards/api.py @@ -1,4 +1,3 @@ -from django.contrib.auth import login, authenticate from django.core.mail import send_mail from django.contrib.auth import authenticate, login from django.contrib.auth.tokens import default_token_generator @@ -44,8 +43,8 @@ class UserDetail(APIView): raise ValidationError('Password is required') email = request.data['email'] - user = User.objects.create_user(email, email=email) - user.confirm_email(user.confirmation_key) + user = User.objects.create_user(email, email=email, password=request.data['password']) + body = ''' Visit the following link to confirm your email address: http://flashy.cards/app/verify_email/%s @@ -57,22 +56,23 @@ class UserDetail(APIView): body % user.confirmation_key, "noreply@flashy.cards", [user.email]) - user = authenticate(username=email, password=request.data['password']) - print user - login(request, user) + user = authenticate(email=email, password=request.data['password']) + login(request, user) return Response(UserSerializer(User).data) def delete(self, request, format=None): request.user.delete() return Response(status=status.HTTP_204_NO_CONTENT) + class UserLogin(APIView): - """ - Authenticates user and returns user data if valid. Handles invalid - users. - """ - def post(self, request, format=None): + """ + Authenticates user and returns user data if valid. Handles invalid + users. + """ + + def post(self, request, format=None): """ Returns user data if valid. """ @@ -85,19 +85,19 @@ class UserLogin(APIView): password = request.data['password'] user = authenticate(username=email, password=password) - if user is not None: - if user.is_active: - login(request, user) - return Response(UserSerializer(User).data) - else: - raise ValidationError('Account is disabled') - else: + if user is None: raise ValidationError('Invalid email or password') + if not user.is_active: + raise ValidationError('Account is disabled') + login(request, user) + return Response(UserSerializer(User).data) + class PasswordReset(APIView): """ Allows user to reset their password. """ + def post(self, request, format=None): """ Send a password reset token/link to the provided email. @@ -122,11 +122,13 @@ class PasswordReset(APIView): If you did not request a password reset, no action is required. ''' - send_mail("Please verify your Flashy account", + send_mail("Flashy password reset", body % (user.pk, token), "noreply@flashy.cards", [user.email]) + return Response(status=status.HTTP_204_NO_CONTENT) + def patch(self, request, format=None): """ Updates user's password to new password. diff --git a/flashy/settings.py b/flashy/settings.py index 45404c4..e8f8de7 100644 --- a/flashy/settings.py +++ b/flashy/settings.py @@ -60,6 +60,7 @@ ROOT_URLCONF = 'flashy.urls' AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend', ) + TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', -- 1.9.1