This commit is contained in:
kdzch 2017-10-03 14:53:30 +00:00 committed by GitHub
commit 0bf7a9bca5
3 changed files with 31 additions and 7 deletions

View File

@ -127,6 +127,8 @@ class RegisterSerializer(serializers.Serializer):
email = serializers.EmailField(required=allauth_settings.EMAIL_REQUIRED)
password1 = serializers.CharField(write_only=True)
password2 = serializers.CharField(write_only=True)
first_name = serializers.CharField(required=settings.ACCOUNT_FIRST_NAME_REQUIRED, max_length=30)
last_name = serializers.CharField(required=settings.ACCOUNT_LAST_NAME_REQUIRED, max_length=30)
def validate_username(self, username):
username = get_adapter().clean_username(username)
@ -153,10 +155,12 @@ class RegisterSerializer(serializers.Serializer):
def get_cleaned_data(self):
return {
'username': self.validated_data.get('username', ''),
'password1': self.validated_data.get('password1', ''),
'email': self.validated_data.get('email', '')
}
'username': self.validated_data.get('username', ''),
'password1': self.validated_data.get('password1', ''),
'email': self.validated_data.get('email', ''),
'first_name': self.validated_data.get('first_name', ''),
'last_name': self.validated_data.get('last_name', ''),
}
def save(self, request):
adapter = get_adapter()

View File

@ -25,7 +25,12 @@ class LoginSerializer(serializers.Serializer):
user = None
if email and password:
user = authenticate(email=email, password=password)
try:
username = UserModel.objects.get(email__iexact=email).get_username()
user = authenticate(username=username, password=password)
except UserModel.DoesNotExist:
msg = _('Unable to log in with provided credentials.')
raise exceptions.ValidationError(msg)
else:
msg = _('Must include "email" and "password".')
raise exceptions.ValidationError(msg)
@ -47,7 +52,12 @@ class LoginSerializer(serializers.Serializer):
user = None
if email and password:
user = authenticate(email=email, password=password)
try:
username = UserModel.objects.get(email__iexact=email).get_username()
user = authenticate(username=username, password=password)
except UserModel.DoesNotExist:
msg = _('Unable to log in with provided credentials.')
raise exceptions.ValidationError(msg)
elif username and password:
user = authenticate(username=username, password=password)
else:
@ -71,7 +81,7 @@ class LoginSerializer(serializers.Serializer):
user = self._validate_email(email, password)
# Authentication through username
if app_settings.AUTHENTICATION_METHOD == app_settings.AuthenticationMethod.USERNAME:
elif app_settings.AUTHENTICATION_METHOD == app_settings.AuthenticationMethod.USERNAME:
user = self._validate_username(username, password)
# Authentication through either username or email

View File

@ -5,7 +5,17 @@ from rest_auth.views import (
PasswordResetView, PasswordResetConfirmView
)
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view()
def null_view(request):
return Response(status=status.HTTP_400_BAD_REQUEST)
urlpatterns = [
url(r'^password-reset-confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', null_view ,name='password_reset_confirm'),
url(r"^confirm-email/$", null_view, name="account_email_verification_sent"),
# URLs that do not require a session or valid token
url(r'^password/reset/$', PasswordResetView.as_view(),
name='rest_password_reset'),