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