Browse Source

Allow authentication with both Username and Email

tags/v1.0.0
Krzysztof Klimonda 11 years ago
parent
commit
92b54799da
3 changed files with 27 additions and 0 deletions
  1. +0
    -0
      pinry/core/auth/__init__.py
  2. +25
    -0
      pinry/core/auth/backends.py
  3. +2
    -0
      pinry/settings/__init__.py

+ 0
- 0
pinry/core/auth/__init__.py View File


+ 25
- 0
pinry/core/auth/backends.py View File

@@ -0,0 +1,25 @@
from django.core.validators import email_re

from pinry.core.models import User

class CombinedAuthBackend(object):
def authenticate(self, username=None, password=None):
is_email = email_re.match(username)
if is_email:
qs = User.objects.filter(email=username)
else:
qs = User.objects.filter(username=username)

try:
user = qs.get()
except User.DoesNotExist:
return None
if user.check_password(password):
return user
return None

def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None

+ 2
- 0
pinry/settings/__init__.py View File

@@ -79,3 +79,5 @@ INSTALLED_APPS = (
'pinry.pins', 'pinry.pins',
'pinry.api', 'pinry.api',
) )

AUTHENTICATION_BACKENDS = ('pinry.core.auth.backends.CombinedAuthBackend', 'django.contrib.auth.backends.ModelBackend',)

Loading…
Cancel
Save