Вопросы по провайдеру DiscourseConnect

Я планирую включить провайдера DiscourseConnect и у меня есть несколько вопросов:

  1. Смогу ли я по-прежнему имперсонировать пользователей и иметь доступ ко всем элементам управления пользователями в административной панели Discourse после включения этой функции?

  2. Что произойдет с теми, кто уже существует в Discourse, но не в WordPress? Затронет ли это их учетные записи? Какие учетные данные они будут использовать для входа, поскольку их фактически не существует в WordPress?

  3. Как я могу добавить кнопку регистрации на своем сайте Discourse, которая перенаправляет пользователей обратно в Discourse после регистрации в WordPress?

  4. Есть ли способ, чтобы пользователи могли регистрироваться ТОЛЬКО в Discourse при включенной этой настройке?

Спасибо!

Да, за исключением функций, связанных с созданием пользователей, таких как приглашения.

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

Кнопка входа незаметно перенаправляет их на сайт WordPress.

Нет.

Что вы имели в виду под этим?

Я только что протестировал это. Я взял аккаунт, который существует в Discourse, но отсутствует в WordPress, попытался войти, и WP выдал следующие ошибки:


Screenshot 2023-07-01 220024

Что, полагаю, имеет смысл с точки зрения WP, поскольку пользователь фактически не существует в WP.

Вопрос в следующем: означает ли включение провайдера DiscourseConnect, что существующие пользователи Discourse, не зарегистрированные в моём WP, больше не смогут входить в систему?
Есть ли решение этой проблемы?

Когда вы нажимаете кнопку входа, вас перекидывает на WP.

Да. Вам нужно будет создать этих пользователей в WordPress.

Я нашёл этот ответ, который дополняет ваши предложения:

Но как импортировать их в WordPress, не затрагивая их текущие учётные данные для входа в Discourse?
Существует ли способ сделать это без сброса логинов пользователей или даже без уведомления о них, чтобы переход был максимально плавным?

Я сомневаюсь. Существует плагин для Discourse, который позволяет импортировать пароли из WordPress, но я сомневаюсь, что есть плагин для работы в обратном направлении. Вам придется заставить всех сбросить свои пароли.

Пока вы не переключитесь на вход через WordPress, учётные записи в WordPress не влияют на Discourse.

У меня есть идея.

Что если я включу WordPress как клиент Discourse, а затем создам скрипт автоматизации, который будет:

  1. Притворяться учётной записью пользователя в Discourse, чтобы автоматизация была авторизована от имени этого пользователя.

  2. Переходить на WordPress и нажимать кнопку «Войти через Discourse».

  3. Повторять это для всех пользователей, существующих в Discourse (около 2000).

Идея в том, что шаг №2 заставит WordPress создать учётную запись для пользователя Discourse с теми же учётными данными. Я также предполагаю, что кнопка «Войти через Discourse» будет работать автоматически, без запроса пароля, когда я авторизован как этот пользователь (притворяясь им).

После того как я проделаю это со всеми пользователями, их учётные записи появятся в WordPress, и тогда я смогу переключить WordPress на провайдера Discourse?

Похоже, что в теории это имеет смысл, но я был бы рад услышать ваше мнение о том, может ли это сработать.

Верно. Если пользователь не существует в WordPress, он не может войти в систему WordPress.

Вам не нужно ничего имитировать.

Если вы хотите, чтобы WordPress был вашим источником аутентификации:

  • создайте всех пользователей в WordPress. Убедитесь, что адрес электронной почты в WordPress совпадает с адресом в Discourse.
  • переключите Discourse на использование WordPress в качестве хоста DiscourseConnect.

Вам придется попросить людей сбросить пароли в WordPress.

Какую проблему решит перенос аутентификации на WordPress? Я думаю, что вы пожалеете, что сделали это.

У нас есть несколько платных курсов для участников и мероприятий, которые проходят на нашем сайте на WordPress, и я хочу обеспечить бесшовную интеграцию между WordPress и Discourse.

Каковы недостатки такого подхода? И почему вы так говорите…

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

Я не знаю, что ещё можно добавить.

Как отметил Джей, лучший способ добиться этого — настроить ваш сайт WordPress в качестве провайдера SSO для Discourse. Ознакомьтесь с этой темой для получения подробной информации о том, как это настроить: Configure single sign-on (SSO) with WP Discourse and DiscourseConnect.

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

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

Одно важное замечание: возможность автоматического входа в существующую учётную запись Discourse будет работать только в том случае, если адреса электронной почты помечаются как «проверенные» на стороне WordPress. Если вы используете стандартную систему регистрации WordPress, всё будет работать без проблем. Если же вы используете пользовательскую страницу регистрации, добавленную плагином, скорее всего, адреса электронной почты пользователей не будут помечены как «проверенные». Подробная информация о том, как решить эту проблему, доступна здесь: Configure single sign-on (SSO) with WP Discourse and DiscourseConnect. Обратите внимание, что крайне важно не принимать адреса электронной почты слепо без какой-либо проверки их подлинности. Если адреса электронной почты не будут проверены, вы рискуете столкнуться с захватом существующих учётных записей.

Откуда мы можем это узнать?

Вот моя страница регистрации: Project Vanlife

Она выглядит иначе из-за моей темы, но я знаю, что у нас нет отдельного плагина для входа.

Похоже, вы используете стандартную систему регистрации WordPress. Я делаю такой вывод, так как ваша страница входа находится по адресу wp-login.php. Это означает, что плагин WP Discourse отметит адреса электронной почты пользователей как подтверждённые.

Ещё один вопрос по этой теме.

Отправляет ли Discourse письма, когда настроен провайдер Discourse Connect? Отправляет ли Discourse уведомления по электронной почте пользователям WordPress?

Как это работает, если пользователь является пользователем WordPress, но никогда не заходил на форум, по сравнению с пользователем WordPress, который заходит на форум?

Да, Discourse продолжает отправлять письма. Уведомления по электронной почте, отправляемые из Discourse, не зависят от использования Discourse Connect в качестве системы аутентификации.

Пользователь вашего сайта WordPress, который никогда не обращался к Discourse, не считается пользователем Discourse. Он не будет получать никаких уведомлений по электронной почте от Discourse. Единственное исключение — если вы включите настройку WP Discourse «Создавать или синхронизировать пользователей Discourse при входе»:

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

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

Также, как новые пользователи могут зарегистрироваться и при этом получить подтверждение своего email? В настоящее время мы перенаправляем их на wp-login.php, где нет возможности регистрации, только входа в систему.

Я могу создать новую кнопку на форуме с надписью «Зарегистрироваться», которая будет перенаправлять их на пользовательскую страницу регистрации внутри WP, но тогда возникнет следующая проблема:

Кроме того, после регистрации я хотел бы перенаправить их обратно на Форум и убедиться, что они вошли в систему.

Я также исследую другой подход, который, по моему мнению, упростит процесс для пользователей, и хотел бы услышать ваше мнение.

Что если мы вручную экспортируем всех пользователей Discourse и импортируем их в WordPress? Этот процесс:

  1. Создаст учётную запись WordPress для каждого пользователя, существующего в Discourse.

  2. Свяжет эту учётную запись с их профилем на форуме.

  3. Отметит их адрес электронной почты как подтверждённый в WordPress. Поскольку они уже являются пользователями Discourse, мы можем предположить, что они подтверждены.

  4. Отправит им письмо с просьбой сбросить пароль от форума (поскольку шаг 1 приведёт к его сбросу).

Таким образом, им не придётся создавать новую учётную запись, а достаточно будет просто сбросить пароль.

Этот процесс не решает вопросы/проблемы, которые я указал в ответе выше.

Вы можете проверить, проверяются ли адреса электронной почты, создав новую учетную запись на WordPress после включения Discourse Connect. Если адреса электронной почты проверяются, вы увидите подтверждение в нижней части страницы настроек пользователя. Вы также можете вручную пометить адрес электронной почты как проверенный здесь:

Предполагая, что адреса электронной почты не проверяются, инструкции о том, как пометить адреса электронной почты как проверенные при создании учетной записи пользователем, находятся здесь: Configure single sign-on (SSO) with WP Discourse and DiscourseConnect. Это будет безопасно сделать, если ваш сайт отправляет пользователям подтверждение по электронной почте со ссылкой, на которую они должны нажать, прежде чем получить доступ к сайту. Если ваш сайт WordPress этого не делает, вы также можете добавить код, чтобы адреса электронной почты пользователей помечались как проверенные после регистрации на одном из ваших курсов. Настройка этого может потребовать помощи разработчика.

Я вижу две отдельные страницы входа на вашем сайте:

  • Project Vanlife (не содержит ссылки на страницу регистрации)
  • Project Vanlife (содержит ссылку на страницу регистрации, но при нажатии на неё я попадаю на страницу «не найдено»)

Самое простое решение — настроить сайт так, чтобы была только одна страница входа, и она содержала рабочую ссылку на страницу регистрации. Я предполагаю, что это можно сделать через страницу настроек плагина, который добавляет форму входа. Обратите внимание, что если вы решите использовать страницу входа по адресу https://projectvanlife.com/login/ , вам нужно будет добавить /login в поле «Путь к странице входа» в настройках WP Discourse:

Я думаю, что это может запутать пользователей. Более простой подход — просто добавить ссылку на ваш форум Discourse, которая настроена так, чтобы пользователи автоматически входили в систему на Discourse при нажатии на ссылку. Вот подробности о том, как создать такую ссылку: Create a DiscourseConnect login link. После включения DiscourseConnect на вашем сайте вы также должны настроить эту ссылку следующим образом:

Это возможно. Некоторые детали о том, как это сделать, находятся здесь: How to import Discourse users to WordPress? - #2 by simon. Основная проблема, которую я вижу, заключается в том, что вы создадите себе лишнюю работу, не облегчив жизнь пользователям. Если бы это было мне, я бы беспокоился о том, что пользователи могут не получить или не прочитать письмо, а некоторые могут быть недовольны созданием новой учетной записи от их имени. Также существует потенциальная проблема безопасности, если используемый вами плагин импорта не имеет возможности принудительно требовать от пользователей смены пароля после первого входа.

Гораздо проще создать тематическое объявление в вашей категории «staff» с деталями об изменениях. Формулировку на скриншоте можно немного улучшить:

После внесения изменений обновите тематическое объявление, чтобы пользователи знали, что они могут обратиться к администратору, если возникнут проблемы с входом.

Я только что подумал о чём-то, что может помочь. Вы можете временно настроить ваш сайт Discourse как провайдера DiscourseConnect для вашего сайта до тех пор, пока ваш сайт WordPress не станет провайдером DiscourseConnect. Если вы сделаете это, вы можете добавить что-то вроде следующего в тематическое объявление:

Вот полная ссылка, которую я использовал:

<a href="http://wp-discourse.test/?discourse_sso=1&redirect_to=http://wp-discourse.test/wp-admin/profile.php" target="_blank">Создать учетную запись на (название вашего сайта)</a>

При нажатии на неё будет создана новая учетная запись на WordPress, и пользователи будут перенаправлены на страницу своего профиля WordPress, где они смогут установить пароль. Обратите внимание, что в вашем случае вам нужно заменить оба вхождения http://wp-discourse.test в ссылке на https://projectvanlife.com/.

@simon, огромное спасибо за ваш подробный ответ, это было крайне полезно!

Это отличная идея!

А что, если мы будем имитировать каждого пользователя и делать это за них? Это вызовет какие-либо проблемы?

Сохраняет ли этот подход их пароль для входа неизменным после переключения WordPress на провайдера Discourse Connect?

Я не думаю, что это вызовет какие-либо проблемы.

Настройка WordPress в качестве провайдера DiscourseConnect не изменит пароль пользователя в WordPress.