Socialaccount + mfa: как обойти форму с кодом mfa?

На старой версии django-allauth (0.61.1) я использовал totp для двух аутов. Теперь я обновился до django-allauth[mfa]==65.3.0 и у меня возникла проблема при использовании socialaccount auth.

Раньше я использовал клиентский AccountAdapter, чтобы проверить, является ли пользователь, пришедший из microsoft:

class AccountAdapter(DefaultAccountAdapter):
    def has_2fa_enabled(self, user):
        """Returns True if the user has 2FA configured."""
        return user.has_2fa_enabled if user.is_authenticated else False

    def login(self, request, user):
        # Require two-factor authentication if it has been configured.
        if (
            self.has_2fa_enabled(user)
            and not request.path == "/auth/microsoft/login/callback/"
        ):

            redirect_url = reverse("two-factor-authenticate")
            # Add GET parameters to the URL if they exist.
            if request.GET:
                redirect_url += "?" + urlencode(request.GET)

            raise ImmediateHttpResponse(response=HttpResponseRedirect(redirect_url))

        return super().login(request, user)

Теперь, с новым обновлением, код 2FA запрашивается ПОСЛЕ выполнения super().login. Так что мой код теперь бесполезен.

Как обойти код MFA?

Я проверил документацию и вижу только «is_mfa_enabled» в DefaultMFAAdapter, но это не очень хорошо, так как он будет просто говорить False на is_mfa_enabled, а не только менять, если приложение запрашивает код или нет.

Есть ли для этого другой способ?

Вернуться на верх