Как я могу рассматривать сброс пароля allauth как проверку электронной почты?

Моя система уже знает адреса электронной почты пользователей. Когда пользователь регистрируется, он получает сообщение об ошибке от allauth:

На этот адрес электронной почты уже зарегистрирован пользователь.

Я советую пользователям сбросить пароль, когда они видят это сообщение. Однако после сброса пароля allauth запускает поток подтверждения адреса электронной почты, поскольку ACCOUNT_EMAIL_VERIFICATION = True.

Пользователю неудобно и необязательно проводить проверку электронной почты в этот момент. Как я могу избежать проверки электронной почты в этом сценарии?

Если вы знаете, что у пользователя может быть только один адрес электронной почты, связанный с ним на момент сброса пароля, то вы можете прослушать сигнал сброса пароля и отметить адрес электронной почты как проверенный. Это не позволит allauth запустить поток проверки электронной почты после сброса пароля.

Например, вы можете поместить следующее в signals.py:

from django.dispatch import receiver
from allauth.account.models import EmailAddress
from allauth.account.signals import password_reset


@receiver(password_reset)
def auto_verify_email_address_on_password_reset(sender, request, user, **kwargs):
    email_address = EmailAddress.objects.get_for_user(user, user.email)
    if not email_address.verified:
        email_address.verified = True
        email_address.save()
Вернуться на верх