valohai / django-allauth-2fa

Two-factor authentication for Django Allauth
Other
212 stars 50 forks source link

user_logged_in signal from Django is executed twice #191

Open SebCorbin opened 1 year ago

SebCorbin commented 1 year ago

This affects apps that are not allauth-aware, for example django-axes that logs access twice

See https://github.com/pennersr/django-allauth/issues/3456

First execution

lib/python3.10/site-packages/allauth/account/views.py(111)post()
-> response = self.form_valid(form)
lib/python3.10/site-packages/allauth/account/views.py(169)form_valid()
-> return form.login(self.request, redirect_url=success_url)
lib/python3.10/site-packages/allauth/account/forms.py(196)login()
-> ret = perform_login(
lib/python3.10/site-packages/allauth/account/utils.py(168)perform_login()
-> return _perform_login(request, login)
lib/python3.10/site-packages/allauth/account/utils.py(178)_perform_login()
-> response = adapter.pre_login(request, login.user, **hook_kwargs)
lib/python3.10/site-packages/allauth_2fa/adapter.py(39)pre_login()
-> return super().login(request, user)
lib/python3.10/site-packages/allauth/account/adapter.py(471)login()
-> django_login(request, user)
lib/python3.10/site-packages/django/contrib/auth/__init__.py(144)login()
-> user_logged_in.send(sender=user.__class__, request=request, user=user)
lib/python3.10/site-packages/django/dispatch/dispatcher.py(176)send()
-> return [
lib/python3.10/site-packages/django/dispatch/dispatcher.py(177)<listcomp>()
-> (receiver, receiver(signal=self, sender=sender, **named))
lib/python3.10/site-packages/axes/signals.py(34)handle_user_logged_in()
-> AxesProxyHandler.user_logged_in(*args, **kwargs)
(Pdb++) c
lib/python3.10/site-packages/axes/signals.py(34)handle_user_logged_in()
-> AxesProxyHandler.user_logged_in(*args, **kwargs)

Second execution

lib/python3.10/site-packages/allauth/account/views.py(111)post()
-> response = self.form_valid(form)
lib/python3.10/site-packages/allauth/account/views.py(169)form_valid()
-> return form.login(self.request, redirect_url=success_url)
lib/python3.10/site-packages/allauth/account/forms.py(196)login()
-> ret = perform_login(
lib/python3.10/site-packages/allauth/account/utils.py(168)perform_login()
-> return _perform_login(request, login)
lib/python3.10/site-packages/allauth/account/utils.py(181)_perform_login()
-> return resume_login(request, login)
lib/python3.10/site-packages/allauth/account/utils.py(207)resume_login()
-> adapter.login(request, login.user)
lib/python3.10/site-packages/allauth/account/adapter.py(471)login()
-> django_login(request, user)
lib/python3.10/site-packages/django/contrib/auth/__init__.py(144)login()
-> user_logged_in.send(sender=user.__class__, request=request, user=user)
lib/python3.10/site-packages/django/dispatch/dispatcher.py(176)send()
-> return [
lib/python3.10/site-packages/django/dispatch/dispatcher.py(177)<listcomp>()
-> (receiver, receiver(signal=self, sender=sender, **named))
lib/python3.10/site-packages/axes/signals.py(34)handle_user_logged_in()
-> AxesProxyHandler.user_logged_in(*args, **kwargs)