1 from django
.contrib
.auth
import get_user_model
2 from django
.contrib
.auth
.backends
import ModelBackend
6 logger
= logging
.getLogger(__name__
)
9 class CaseInsensitiveModelBackend(ModelBackend
):
10 """Authenticates with a case-insensitive username"""
12 def authenticate(self
, request
, username
=None, password
=None, **kwargs
):
13 UserModel
= get_user_model()
14 users
= UserModel
.objects
.filter(username__iexact
=username
).order_by(
19 # Run the default password hasher once to reduce the timing
20 # difference between an existing and a non-existing user (#20760).
21 UserModel().set_password(password
)
25 logger
.error("Login with non-unique username: %s", username
)
28 if user
.check_password(password
):