diff --git a/settings.py b/settings.py index 5ed5c4c..15704c1 100644 --- a/settings.py +++ b/settings.py @@ -133,6 +133,10 @@ MIDDLEWARE_CLASSES = ( 'blogs.middleware.BlogMiddleware', ) +AUTHENTICATION_BACKENDS = ( + 'utils.backends.EmailOrUsernameModelBackend', +) + ROOT_URLCONF = 'snipt.urls' PROJECT_PATH = os.path.abspath(os.path.dirname(__file__)) diff --git a/templates/registration/login.html b/templates/registration/login.html index 16c8389..af3139b 100644 --- a/templates/registration/login.html +++ b/templates/registration/login.html @@ -28,7 +28,7 @@
Log in
- +
{{ form.username }} {% if form.errors.username %} diff --git a/urls.py b/urls.py index a7b2a7e..2b5e90c 100644 --- a/urls.py +++ b/urls.py @@ -60,8 +60,7 @@ urlpatterns = patterns('', url(r'^search/$', search), url(r'^register/$', lambda x: HttpResponseRedirect('/signup/')), - url(r'^signup/$', - SniptRegistrationView.as_view(), + url(r'^signup/$', SniptRegistrationView.as_view(), name='registration_register'), url(r'', include('registration.backends.default.urls')), @@ -69,4 +68,5 @@ urlpatterns = patterns('', ) if settings.DEBUG: - urlpatterns = urlpatterns + static('/media/', document_root=os.path.join(settings.BASE_PATH, 'media')) + urlpatterns = urlpatterns + static('/media/', + document_root=os.path.join(settings.BASE_PATH, 'media')) diff --git a/utils/backends.py b/utils/backends.py new file mode 100644 index 0000000..4939337 --- /dev/null +++ b/utils/backends.py @@ -0,0 +1,21 @@ +from django.conf import settings +from django.contrib.auth.models import User + +class EmailOrUsernameModelBackend(object): + def authenticate(self, username=None, password=None): + if '@' in username: + kwargs = {'email': username} + else: + kwargs = {'username': username} + try: + user = User.objects.get(**kwargs) + if user.check_password(password): + return user + except User.DoesNotExist: + return None + + def get_user(self, user_id): + try: + return User.objects.get(pk=user_id) + except User.DoesNotExist: + return None diff --git a/utils/forms.py b/utils/forms.py index 92bfd1f..f178b8f 100644 --- a/utils/forms.py +++ b/utils/forms.py @@ -3,7 +3,6 @@ from registration.forms import RegistrationForm from django.contrib.auth.models import User from django import forms - class SniptRegistrationForm(RegistrationForm): """ Subclass of ``RegistrationForm`` which enforces uniqueness of