evennia/lib/web/utils/backends.py

18 lines
633 B
Python

from django.contrib.auth.backends import ModelBackend
from django.contrib.auth import get_user_model
class CaseInsensitiveModelBackend(ModelBackend):
"""
By default ModelBackend does case _sensitive_ username authentication, which isn't what is
generally expected. This backend supports case insensitive username authentication.
"""
def authenticate(self, username=None, password=None):
User = get_user_model()
try:
user = User.objects.get(username__iexact=username)
if user.check_password(password):
return user
else:
return None
except User.DoesNotExist:
return None