Конфликтующие адреса электронной почты: предоставление администраторам дополнительных полномочий для решения проблем

Один из наших пользователей имеет две учётные записи Discourse: одна больше не используется, а в новую он не может войти. Похоже, причина в том, что его новая учётная запись у нашего провайдера CAS SSO использует тот же адрес электронной почты, что и его старая учётная запись на нашем форуме.

Я провёл эксперименты со своей тестовой учётной записью, пытаясь её деактивировать и удалить запись SSO. Однако это, похоже, блокирует новые входы в эту учётную запись, поскольку существующая запись больше не соответствует полезной нагрузке SSO, и теперь адрес электронной почты считается конфликтующим.

Также я пробовал изменить адрес электронной почты на неиспользуемой учётной записи пользователя в Discourse, чтобы он мог войти в свою новую учётную запись с этим адресом. Однако требуется подтверждение по электронной почте. Я настроил псевдоним адреса на нашем SMTP-сервере, чтобы перехватывать произвольные адреса. Но при переходе по ссылке мне необходимо войти в систему от имени пользователя через SSO. Проблема в том, что для этого мне пришлось бы реактивировать учётную запись пользователя, установить новый пароль, связать её с нашей базой данных участников и создать фиктивное членство у нашего провайдера SSO. Это, безусловно, возможно, но мне кажется, что я запутался в паутине, пытаясь исправить учётную запись этого пользователя.

Внесение изменений напрямую в базу данных с помощью SQL-запросов — это то, что я делал в прошлом, но это рискованно, и я бы предпочёл избежать такого подхода, если это возможно.

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

Если есть другие способы решить эту проблему, пожалуйста, дайте знать. Спасибо!

Почему бы не объединить старых пользователей с новыми?

Похоже, вы используете реализацию SSO в Discourse и устанавливаете параметр SSO require_activation в значение true в полезной нагрузке SSO. Если это так, ознакомьтесь с этой темой для получения подробной информации о решении проблемы: Debug and fixing common DiscourseConnect issues. Безопаснее выполнять команды консоли Rails, приведенные в этой теме, чем напрямую обновлять вашу базу данных с помощью SQL-запросов.

Объединение двух учетных записей, как указано в вышеупомянутом сообщении, вероятно, является хорошим подходом, но после этого вам, возможно, потребуется внести некоторые изменения в запись SSO.

Также я только что нашел это через поиск объединение учетных записей пользователей. Это все еще доступно, если нажать на пользователя в списке активных пользователей (панель администратора) и прокрутить вниз, чтобы увидеть три кнопки, показанные ниже.


Discourse 2.5.0.beta3 Release Notes

Объединение пользователей через интерфейс

В начале 2018 года мы добавили поддержку объединения двух учетных записей пользователей в одну. Для этого требовался SSH-доступ к серверу, так как поддержка объединения была реализована в виде задачи Rake.

Теперь любой администратор может объединять пользователей! Перейдите на страницу управления пользователями и выберите «Перенос и удаление» в нижней части страницы.image

Введите имя пользователя, в которое нужно объединить учетную запись, и нажмите «Перенос и удаление @имя_пользователя», чтобы начать процесс объединения.

Спасибо за советы и помощь по этому вопросу. На следующей неделе я попробую это на тестовых аккаунтах и сообщу, если возникнут какие-либо серьёзные проблемы. Спасибо : )

Отлично, всё получилось. Когда я объединил учётные записи, Discourse сохранил учётные данные SSO целевой учётной записи (в которую была слита другая, не удалённая), а вторая учётная запись была удалена.

Спасибо за помощь в этом вопросе. :slight_smile: