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, а не только менять, если приложение запрашивает код или нет.
Есть ли для этого другой способ?