diff --git a/core/api/auth.py b/core/api/auth.py index 218450dd0143a0f70f40824719547ef9751ae8b2..56120f14618eead5c88b583cb4bc9c8b5eb52224 100644 --- a/core/api/auth.py +++ b/core/api/auth.py @@ -2,6 +2,7 @@ from django.shortcuts import render from rest_framework import generics from rest_framework.response import Response from knox.models import AuthToken +from django.contrib.auth.backends import AllowAllUsersModelBackend from core.serializers.login import LoginSerializer from core.serializers.register import RegisterSerializer diff --git a/core/serializers/login.py b/core/serializers/login.py index f7d9ed2da840b58a4e4d59b3e788a47833f9bb92..9c5f3fe5c5cdc00780c00f9fd0db3f49bd46ac6a 100644 --- a/core/serializers/login.py +++ b/core/serializers/login.py @@ -1,4 +1,5 @@ from django.contrib.auth import authenticate +from django.contrib.auth.models import User from rest_framework import serializers @@ -7,6 +8,11 @@ class LoginSerializer(serializers.Serializer): password = serializers.CharField() 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) if not user: raise serializers.ValidationError('Invalid Credentials.') diff --git a/core/serializers/register.py b/core/serializers/register.py index 72400c02e7499dd0ea4d3c6f2b6f94c3a43a674b..470dd19c543cdcf03b00bfe83c2f072a5989c9d8 100644 --- a/core/serializers/register.py +++ b/core/serializers/register.py @@ -1,8 +1,6 @@ from django.contrib.auth.models import User from rest_framework import serializers -from core.models.profile import Profile - class RegisterSerializer(serializers.ModelSerializer): class Meta: @@ -17,3 +15,8 @@ class RegisterSerializer(serializers.ModelSerializer): validated_data['password'] ) 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