You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.2 KiB
34 lines
1.2 KiB
# backends.py
|
|
from django.contrib.auth import get_user_model
|
|
from django.contrib.auth.backends import ModelBackend
|
|
from django.db.models import Q
|
|
import logging
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
class EmailOrUsernameModelBackend(ModelBackend):
|
|
def authenticate(self, request, username=None, password=None, **kwargs):
|
|
UserModel = get_user_model()
|
|
|
|
# print(f"Backend attempting authentication for: {username}") # Debug print
|
|
logger.info(f"Backend attempting authentication for: {username}")
|
|
|
|
try:
|
|
user = UserModel.objects.get(
|
|
Q(username__iexact=username) | Q(email__iexact=username)
|
|
)
|
|
# print(f"User found: {user}") # Debug print
|
|
logger.info(f"User found: {user}")
|
|
|
|
if user.check_password(password):
|
|
# print("Password check successful") # Debug print
|
|
logger.info("Password check successful")
|
|
return user
|
|
print("Password check failed") # Debug print
|
|
logger.warning("Password check failed")
|
|
return None
|
|
|
|
except UserModel.DoesNotExist:
|
|
print("User not found") # Debug print
|
|
logger.warning("User not found")
|
|
return None
|
|
|