0

My models were fine, migrate successfully and I am able to create superuser. I am not able to go to admin login page as the error shows up "CustomAuthBackend() missing 1 required positional argument: 'ModelBackend'"

In Custom Backends:

def CustomAuthBackend(ModelBackend):
  def authenticate(self, request, email=None, password=None, phone=None):
    my_user_model = get_user_model()
    user = None
    if email:
        try:
            user = my_user_model.objects.get(email=email)
        except:
            return None #Return None if no such user
    elif phone:
        try:
            user = my_user_model.objects.get(phone=phone)
        except:
            return None #Return None is no such user
    if user:
        if user.check_password(password):
            return user
        else:
            return None 


  def get_user(self, user_id):
    my_user_model = get_user_model()
    try:
        return my_user_model.objects.get(pk=user_id)
    except my_user_model.DoesNotExist:
        return None

In Settings:

AUTH_USER_MODEL = 'authengine.User'

AUTHENTICATION_BACKENDS = ['authengine.backends.CustomAuthBackend']

Screenshot

1 Answers1

0

Your error is here

def CustomAuthBackend(ModelBackend):

You've used the def keyword instead of declaring CustomAuthBackend as a class. Django thinks CustomAuthBackend is a function and is treating ModelBackend as an input parameter instead of as an inherited class.

Simply change to

class CustomAuthBackend(ModelBackend):
Danoram
  • 8,132
  • 12
  • 51
  • 71