Skip to content
Snippets Groups Projects
Commit 4ae021e0 authored by Chris Li's avatar Chris Li
Browse files

Allow user login with email.

parent 82cce05b
No related branches found
No related tags found
1 merge request!2Login with Email
...@@ -2,6 +2,7 @@ from django.shortcuts import render ...@@ -2,6 +2,7 @@ from django.shortcuts import render
from rest_framework import generics from rest_framework import generics
from rest_framework.response import Response from rest_framework.response import Response
from knox.models import AuthToken from knox.models import AuthToken
from django.contrib.auth.backends import AllowAllUsersModelBackend
from core.serializers.login import LoginSerializer from core.serializers.login import LoginSerializer
from core.serializers.register import RegisterSerializer from core.serializers.register import RegisterSerializer
......
from django.contrib.auth import authenticate from django.contrib.auth import authenticate
from django.contrib.auth.models import User
from rest_framework import serializers from rest_framework import serializers
...@@ -7,6 +8,11 @@ class LoginSerializer(serializers.Serializer): ...@@ -7,6 +8,11 @@ class LoginSerializer(serializers.Serializer):
password = serializers.CharField() password = serializers.CharField()
def validate(self, data): def validate(self, data):
usersByEmail = User.objects.filter(email=data['username'].lower())
if len(usersByEmail) != 0:
username = usersByEmail[0].username
data['username'] = username
user = authenticate(**data) user = authenticate(**data)
if not user: if not user:
raise serializers.ValidationError('Invalid Credentials.') raise serializers.ValidationError('Invalid Credentials.')
......
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 core.models.profile import Profile
class RegisterSerializer(serializers.ModelSerializer): class RegisterSerializer(serializers.ModelSerializer):
class Meta: class Meta:
...@@ -17,3 +15,8 @@ class RegisterSerializer(serializers.ModelSerializer): ...@@ -17,3 +15,8 @@ class RegisterSerializer(serializers.ModelSerializer):
validated_data['password'] validated_data['password']
) )
return user return user
def validate(self, data):
if len(User.objects.filter(email=data['email'])) != 0:
raise serializers.ValidationError({"email": "A user with that email already exists."})
return data
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment