Как ограничить AuthenticateCallbackView в django-microsoft-auth только зарегистрированными учетными записями?

Я использую django-microsoft-auth в своем проекте Django. Я пытаюсь ограничить эту опцию только зарегистрированными пользователями, чтобы только люди, которые уже зарегистрировались, могли использовать кнопку Log in with Microsoft.

Я нашел в AuthenticateCallbackView метод под названием _authenticate. Код ниже:

def _authenticate(self, code):
if "error" not in self.context["message"]:
    if code is None:
        self.context["message"] = {"error": "missing_code"}
    else:
        # authenticate user using Microsoft code
        user = authenticate(self.request, code=code)
        if user is None:
            # this should not fail at this point except for network
            # error while retrieving profile or database error
            # adding new user
            self.context["message"] = {"error": "login_failed"}
        else:
            login(self.request, user)

Мне интересно, как я могу ограничить аутентификацию только теми, у кого есть учетные записи. В случае, если у кого-то нет учетной записи, он будет посылать сообщение: Пожалуйста, сначала зарегистрируйте свой аккаунт.

Вы можете расширить MicrosoftAuthenticationBackend, чтобы переопределить метод authenticate. Не забудьте загрузить свои настройки для использования собственного бэкенда аутентификации.

Попробуйте что-нибудь вроде следующего:

class MyAuthenticationBackend(MicrosoftAuthenticationBackend):
    def authenticate(self, request):
        email = request.POST.get("email") # replace this username or any other attribute used for auth
        if User.objects.filter(email=email).exists():
            return super().authenticate(request)
        return None
Вернуться на верх