From d6eccc2087c74a755f7f68a9b0f6508e8f6a88d3 Mon Sep 17 00:00:00 2001 From: gzbender Date: Thu, 9 Aug 2018 15:54:42 +0500 Subject: [PATCH] lil-600, case insensitive auth backend --- apps/auth/backend.py | 21 +++++++++++++++++++++ project/settings.py | 1 + 2 files changed, 22 insertions(+) create mode 100644 apps/auth/backend.py diff --git a/apps/auth/backend.py b/apps/auth/backend.py new file mode 100644 index 00000000..125f411a --- /dev/null +++ b/apps/auth/backend.py @@ -0,0 +1,21 @@ +from django.contrib.auth.backends import ModelBackend +from django.contrib.auth import get_user_model + +User = get_user_model() + + +class CaseInsensitiveModelBackend(ModelBackend): + + def authenticate(self, username=None, password=None): + try: + user = User.objects.get(**{f'{User.USERNAME_FIELD}__iexact': username}) + 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/project/settings.py b/project/settings.py index 1aecdb8c..646c94ed 100644 --- a/project/settings.py +++ b/project/settings.py @@ -142,6 +142,7 @@ AUTH_PASSWORD_VALIDATORS = [ AUTH_USER_MODEL = 'user.User' +AUTHENTICATION_BACKENDS = ['apps.auth.backend.CaseInsensitiveModelBackend'] # Internationalization # https://docs.djangoproject.com/en/2.0/topics/i18n/