Я бы хотел, чтобы система пыталась использовать второй адрес электронной почты, если первый продолжает возвращать ошибку.
Возможно ли это? Если нет, то каково назначение второго адреса электронной почты в Discourse?
Я бы хотел, чтобы система пыталась использовать второй адрес электронной почты, если первый продолжает возвращать ошибку.
Возможно ли это? Если нет, то каково назначение второго адреса электронной почты в Discourse?
Когда пользователь отвечает на пост в Discourse по электронной почте с дополнительного адреса, сообщение публикуется, а не отклоняется из-за неизвестного пользователя.
Вы имеете в виду, что если форум не использует email для тем, то дополнительный адрес электронной почты совершенно бесполезен и его нельзя использовать так, как просил OP, даже для вторичного входа?
Если так, то это для пользователей скорее просто лишний шум (да, я знаю — дополнительные адреса нужны, если используются варианты SSO, такие как Microsoft, Google и т. д.).
Первоначальное обсуждение этой темы находится здесь: Two emails for one user. Продолжение обсуждения: Additional email address per user account support.
Я считаю, что эта функция была реализована в основном для обработки публикации в Discourse по электронной почте в случаях, когда пользователи используют несколько учётных записей электронной почты для отправки сообщений.
В системе нет механизма, который заставлял бы Discourse пытаться отправить письмо на вторичный адрес электронной почты в случае, если письмо, отправленное на основной адрес, не доставлено. Я понимаю, как это может быть полезно в некоторых ситуациях.
Технически вторичные адреса электронной почты могут использоваться для поиска пользователя в любой момент, когда Discourse пытается найти пользователя по адресу электронной почты с помощью User.find_by_email.
Пользователи могут входить в систему Discourse, используя свой вторичный адрес электронной почты.
При использовании внешнего провайдера аутентификации для входа в Discourse пользователи могут быть найдены по их вторичному адресу электронной почты на основе адреса, предоставленного провайдером аутентификации.
Интересно, что если включена настройка сайта auth overrides email и внешний провайдер аутентификации предоставляет вторичный адрес электронной почты пользователя, то этот вторичный адрес становится основным, а первоначальный основной адрес уничтожается. Ранее такой случай вызывал ошибку входа, поэтому такое поведение, похоже, намеренное. Мне пришлось потратить слишком много времени на поиск места, где это происходит: discourse/app/models/user.rb at main · discourse/discourse · GitHub. (Первоначальный основной адрес электронной почты уничтожается при сохранении пользователя.)
Это важно, чтобы в случае сбоя основного адреса электронной почты администратор или модератор мог попытаться связаться с владельцем аккаунта вручную через дополнительный адрес?
В противном случае аккаунт обычно блокируется, если нет действительного адреса электронной почты. Однако некоторые письма могут временно возвращаться как недоставленные, например, если у пользователя есть просроченные платежи за этот адрес.
Это, безусловно, добавляет немного гибкости. Ситуация, когда пользователь теряет доступ к адресу электронной почты, который он использовал для создания аккаунта в Discourse, является одной из самых сложных в решении.
Да, это может быть сложно: подтвердить личность человека, который заявляет о наличии аккаунта, но не имеет доступа к основной электронной почте и не помнит пароль. Я указал резервный адрес электронной почты для своего аккаунта здесь, который использует другие серверы, так что, надеюсь, если с основным возникнут проблемы, резервный сработает.