Добавление пользователя в группу через вебхук по электронной почте

Добрый день,

Я пытаюсь добавить пользователей из WordPress в закрытые группы Discourse через веб-хук.

Я использую плагин WP Discourse как метод входа SSO и не разрешаю пользователям менять своё имя пользователя в Discourse. Я сделал это, потому что думал, что таким образом смогу использовать имя пользователя из WordPress для добавления их в группу в Discourse, так как считал, что они будут одинаковыми.

Проблема в том, что когда имя пользователя генерируется автоматически в WordPress, иногда в качестве имени используется их email. Но Discourse не разрешает использовать символ «@» в именах пользователей, поэтому имя пользователя обрывается на «@».

Пример:
Email в WordPress: jhon@gmail.com
Имя пользователя в WordPress (сгенерированное автоматически): jhon@gmail.com
Имя пользователя в Discourse (сгенерированное через SSO WP Discourse): jhon

Это не позволяет мне использовать пользователя WordPress для добавления его в группу.

Есть ли более простой способ решить эту задачу?

Было бы здорово иметь возможность добавлять пользователей в группу по их email вместо имени пользователя. Email всегда доступен в любом приложении (CRM, WordPress и т.д.), поэтому не потребуется дополнительный шаг с выполнением GET-запроса к API для получения имени пользователя по email и последующего PUT-запроса для добавления их в группу.

Я использую Fluent Forms для отправки этих данных в веб-хук из WordPress при отправке формы, поэтому не могу выполнить GET-запрос, а затем PUT с именем пользователя.

Спасибо!

Если я вас правильно понимаю, вы делаете следующее:

  1. Используете DiscourseConnect с WordPress в качестве провайдера и Discourse в качестве клиента.
  2. Используете вебхук в WordPress для добавления пользователей в группы в Discourse (например, PUT запрос к /g/:group_name/members (ссылка на API)) в результате действия формы.

Если это так, то вы можете найти имя пользователя Discourse в WordPress в поле метаданных пользователя discourse_username, то есть:

get_user_meta($user_id, 'discourse_username', true);

Используйте это значение для получения имени пользователя, которое нужно включить в PUT-запрос после выполнения действия формы.

Вы можете убедиться, что поле discourse_username заполнено для ваших пользователей, используя вебхуки пользователей в плагине WP Discourse (обратите внимание, что речь идет о других вебхуках, чем те, которые вы сейчас используете в своей форме).