diff --git a/pinax/apps/account/auth_backends.py b/pinax/apps/account/auth_backends.py index 266d8eb5e..e8a9bb850 100644 --- a/pinax/apps/account/auth_backends.py +++ b/pinax/apps/account/auth_backends.py @@ -1,17 +1,24 @@ +from django.conf import settings + from django.contrib.auth.backends import ModelBackend from django.contrib.auth.models import User - -class EmailModelBackend(ModelBackend): - """ - A backend that provides authentication through e-mail instead of username. - """ +class AuthenticationBackend(ModelBackend): - def authenticate(self, email=None, password=None): + def authenticate(self, **credentials): + lookup_params = {} + if settings.ACCOUNT_EMAIL_AUTHENTICATION: + lookup_params["email"] = credentials["email"] + else: + lookup_params["username"] = credentials["username"] try: - user = User.objects.get(email=email) - if user.check_password(password): - return user + user = User.objects.get(**lookup_params) except User.DoesNotExist: return None + else: + if user.check_password(credentials["password"]): + return user + + +EmailModelBackend = AuthenticationBackend \ No newline at end of file diff --git a/pinax/projects/account_project/settings.py b/pinax/projects/account_project/settings.py index 411fdd6d9..937490a29 100644 --- a/pinax/projects/account_project/settings.py +++ b/pinax/projects/account_project/settings.py @@ -168,14 +168,9 @@ ACCOUNT_EMAIL_AUTHENTICATION = False ACCOUNT_UNIQUE_EMAIL = EMAIL_CONFIRMATION_UNIQUE_EMAIL = False -if ACCOUNT_EMAIL_AUTHENTICATION: - AUTHENTICATION_BACKENDS = [ - "pinax.apps.account.auth_backends.EmailModelBackend", - ] -else: - AUTHENTICATION_BACKENDS = [ - "django.contrib.auth.backends.ModelBackend", - ] +AUTHENTICATION_BACKENDS = [ + "pinax.apps.account.auth_backends.AuthenticationBackend", +] LOGIN_URL = "/account/login/" # @@@ any way this can be a url name? LOGIN_REDIRECT_URLNAME = "what_next" diff --git a/pinax/projects/basic_project/settings.py b/pinax/projects/basic_project/settings.py index fd4b7d3d9..faf5bf916 100644 --- a/pinax/projects/basic_project/settings.py +++ b/pinax/projects/basic_project/settings.py @@ -185,14 +185,9 @@ ACCOUNT_EMAIL_AUTHENTICATION = False ACCOUNT_UNIQUE_EMAIL = EMAIL_CONFIRMATION_UNIQUE_EMAIL = False -if ACCOUNT_EMAIL_AUTHENTICATION: - AUTHENTICATION_BACKENDS = [ - "pinax.apps.account.auth_backends.EmailModelBackend", - ] -else: - AUTHENTICATION_BACKENDS = [ - "django.contrib.auth.backends.ModelBackend", - ] +AUTHENTICATION_BACKENDS = [ + "pinax.apps.account.auth_backends.AuthenticationBackend", +] LOGIN_URL = "/account/login/" # @@@ any way this can be a url name? LOGIN_REDIRECT_URLNAME = "what_next" diff --git a/pinax/projects/cms_company_project/settings.py b/pinax/projects/cms_company_project/settings.py index c83887063..cfed10685 100644 --- a/pinax/projects/cms_company_project/settings.py +++ b/pinax/projects/cms_company_project/settings.py @@ -198,14 +198,9 @@ ACCOUNT_EMAIL_AUTHENTICATION = False ACCOUNT_UNIQUE_EMAIL = EMAIL_CONFIRMATION_UNIQUE_EMAIL = False -if ACCOUNT_EMAIL_AUTHENTICATION: - AUTHENTICATION_BACKENDS = [ - "pinax.apps.account.auth_backends.EmailModelBackend", - ] -else: - AUTHENTICATION_BACKENDS = [ - "django.contrib.auth.backends.ModelBackend", - ] +AUTHENTICATION_BACKENDS = [ + "pinax.apps.account.auth_backends.AuthenticationBackend", +] EMAIL_CONFIRMATION_DAYS = 2 EMAIL_DEBUG = DEBUG diff --git a/pinax/projects/cms_holidayhouse_project/settings.py b/pinax/projects/cms_holidayhouse_project/settings.py index ce65a7f23..17daca8c8 100644 --- a/pinax/projects/cms_holidayhouse_project/settings.py +++ b/pinax/projects/cms_holidayhouse_project/settings.py @@ -198,14 +198,9 @@ ACCOUNT_EMAIL_AUTHENTICATION = False ACCOUNT_UNIQUE_EMAIL = EMAIL_CONFIRMATION_UNIQUE_EMAIL = False -if ACCOUNT_EMAIL_AUTHENTICATION: - AUTHENTICATION_BACKENDS = [ - "pinax.apps.account.auth_backends.EmailModelBackend", - ] -else: - AUTHENTICATION_BACKENDS = [ - "django.contrib.auth.backends.ModelBackend", - ] +AUTHENTICATION_BACKENDS = [ + "pinax.apps.account.auth_backends.AuthenticationBackend", +] EMAIL_CONFIRMATION_DAYS = 2 EMAIL_DEBUG = DEBUG diff --git a/pinax/projects/code_project/settings.py b/pinax/projects/code_project/settings.py index c8d29d176..8272ed3b2 100644 --- a/pinax/projects/code_project/settings.py +++ b/pinax/projects/code_project/settings.py @@ -214,14 +214,9 @@ ACCOUNT_EMAIL_AUTHENTICATION = False ACCOUNT_UNIQUE_EMAIL = EMAIL_CONFIRMATION_UNIQUE_EMAIL = False -if ACCOUNT_EMAIL_AUTHENTICATION: - AUTHENTICATION_BACKENDS = [ - "pinax.apps.account.auth_backends.EmailModelBackend", - ] -else: - AUTHENTICATION_BACKENDS = [ - "django.contrib.auth.backends.ModelBackend", - ] +AUTHENTICATION_BACKENDS = [ + "pinax.apps.account.auth_backends.AuthenticationBackend", +] LOGIN_URL = "/account/login/" # @@@ any way this can be a url name? LOGIN_REDIRECT_URLNAME = "what_next" diff --git a/pinax/projects/intranet_project/settings.py b/pinax/projects/intranet_project/settings.py index 761d3a004..66317f751 100644 --- a/pinax/projects/intranet_project/settings.py +++ b/pinax/projects/intranet_project/settings.py @@ -209,14 +209,9 @@ ACCOUNT_EMAIL_AUTHENTICATION = False ACCOUNT_UNIQUE_EMAIL = EMAIL_CONFIRMATION_UNIQUE_EMAIL = False -if ACCOUNT_EMAIL_AUTHENTICATION: - AUTHENTICATION_BACKENDS = [ - "pinax.apps.account.auth_backends.EmailModelBackend", - ] -else: - AUTHENTICATION_BACKENDS = [ - "django.contrib.auth.backends.ModelBackend", - ] +AUTHENTICATION_BACKENDS = [ + "pinax.apps.account.auth_backends.AuthenticationBackend", +] LOGIN_URL = "/account/login/" # @@@ any way this can be a url name? LOGIN_REDIRECT_URLNAME = "home" diff --git a/pinax/projects/private_beta_project/settings.py b/pinax/projects/private_beta_project/settings.py index 4dc81e5a3..04ec05c51 100644 --- a/pinax/projects/private_beta_project/settings.py +++ b/pinax/projects/private_beta_project/settings.py @@ -170,14 +170,9 @@ ACCOUNT_EMAIL_AUTHENTICATION = False ACCOUNT_UNIQUE_EMAIL = EMAIL_CONFIRMATION_UNIQUE_EMAIL = False -if ACCOUNT_EMAIL_AUTHENTICATION: - AUTHENTICATION_BACKENDS = [ - "pinax.apps.account.auth_backends.EmailModelBackend", - ] -else: - AUTHENTICATION_BACKENDS = [ - "django.contrib.auth.backends.ModelBackend", - ] +AUTHENTICATION_BACKENDS = [ + "pinax.apps.account.auth_backends.AuthenticationBackend", +] LOGIN_URL = "/account/login/" LOGIN_REDIRECT_URLNAME = "what_next" diff --git a/pinax/projects/sample_group_project/settings.py b/pinax/projects/sample_group_project/settings.py index 910d5b3a1..d7ae8db11 100644 --- a/pinax/projects/sample_group_project/settings.py +++ b/pinax/projects/sample_group_project/settings.py @@ -216,14 +216,9 @@ ACCOUNT_EMAIL_AUTHENTICATION = False ACCOUNT_UNIQUE_EMAIL = EMAIL_CONFIRMATION_UNIQUE_EMAIL = False -if ACCOUNT_EMAIL_AUTHENTICATION: - AUTHENTICATION_BACKENDS = [ - "pinax.apps.account.auth_backends.EmailModelBackend", - ] -else: - AUTHENTICATION_BACKENDS = [ - "django.contrib.auth.backends.ModelBackend", - ] +AUTHENTICATION_BACKENDS = [ + "pinax.apps.account.auth_backends.AuthenticationBackend", +] LOGIN_URL = "/account/login/" # @@@ any way this can be a url name? LOGIN_REDIRECT_URLNAME = "what_next" diff --git a/pinax/projects/social_project/settings.py b/pinax/projects/social_project/settings.py index 752364f07..3c36ca721 100644 --- a/pinax/projects/social_project/settings.py +++ b/pinax/projects/social_project/settings.py @@ -230,14 +230,9 @@ ACCOUNT_EMAIL_AUTHENTICATION = False ACCOUNT_UNIQUE_EMAIL = EMAIL_CONFIRMATION_UNIQUE_EMAIL = False -if ACCOUNT_EMAIL_AUTHENTICATION: - AUTHENTICATION_BACKENDS = [ - "pinax.apps.account.auth_backends.EmailModelBackend", - ] -else: - AUTHENTICATION_BACKENDS = [ - "django.contrib.auth.backends.ModelBackend", - ] +AUTHENTICATION_BACKENDS = [ + "pinax.apps.account.auth_backends.AuthenticationBackend", +] LOGIN_URL = "/account/login/" # @@@ any way this can be a url name? LOGIN_REDIRECT_URLNAME = "what_next"