Bump babel from 2.9.1 to 2.10.3
[mygpo.git] / mygpo / users / backend.py
blob47338332d31f611ae40fc67acf9d08d590472744
1 from django.contrib.auth import get_user_model
2 from django.contrib.auth.backends import ModelBackend
4 import logging
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(
15 "-last_login"
17 users = list(users)
18 if len(users) == 0:
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)
22 return None
24 if len(users) > 1:
25 logger.error("Login with non-unique username: %s", username)
27 user = users[0]
28 if user.check_password(password):
29 return user