Сообщение приветствия TL2 отправляется при каждом входе через SSO

Происходит следующее:

Некоторые пользователи получают уведомление о приветствии TL2 («Ваш уровень доверия повышен») при каждом входе в систему.

Это происходит при следующих условиях:

  • Включен вход через SSO, где Discourse является клиентом SSO.
  • В WP-Discourse включена опция «Синхронизация данных пользователя», что приводит к вызову sync_sso каждый раз, когда пользователь входит в WordPress.
  • При вызове sync_sso назначается группа с параметром grant_trust_level, значение которого ниже текущего уровня доверия пользователя.

Это приводит к тому, что уровни доверия пользователя пересчитываются заново с нуля, и сообщение о приветствии отправляется каждый раз.

6 лайков

Привет,

Спасибо за сообщение об ошибке! Я попытался воспроизвести эту проблему локально, но у меня это не получилось. Вот моя конфигурация:


(Wordpress)

  • Создал пользователя WordPress «Steaky» с адресом электронной почты steaky@cat.com
  • Добавил wpdc_custom_sso_params, чтобы назначить группу cats всем пользователям, которые входят в систему с параметром $params['groups'] = 'cats';

(Discourse)

  • Создал пользователя «Steaky» с адресом электронной почты steaky@cat.com
  • Легитимно (без блокировки) установил для Steaky уровень доверия trust_level_3
  • Создал группу «cats» и установил параметр «Уровень доверия, автоматически предоставляемый участникам» на 2 для группы «cats»

Wordpress и Discourse подключены :ok_hand:, также :ballot_box_with_check: синхронизация данных пользователей.

(Discourse)

  • Войдите как Steaky: происходит перенаправление на WordPress, вход в систему, затем перенаправление обратно в Discourse
  • (подтвердите, что к Steaky применена группа «cats»)
  • Steaky не видит приветственное сообщение

^ Повторите описанные выше шаги с настройкой SiteSetting.discourse_connect_overrides_groups — результат тот же.


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

  • Какие ещё настройки «Discourse Connect» у вас включены?
  • Присоединяются ли затронутые пользователи отдельно к группам, которые могут предоставлять им определённые уровни доверия?
  • Заблокирован ли уровень доверия у затронутых пользователей? В каких группах они состоят?
  • Любая другая информация, которая может быть полезна.

Спасибо!

4 лайка

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

Вернёмся к моим заметкам. Ситуация была немного иной по сравнению с тем, что делаете вы. SSO передавал пустое поле групп (просто groups=). При этом пользователи, о которых идёт речь, состояли в другой группе, неизвестной провайдеру SSO, которая принудительно устанавливала уровень доверия TL2 для своих участников.

Кроме того, приветственные сообщения для уровней доверия TL2 и TL3, насколько я помню, работают по-разному, поэтому при попытке воспроизвести проблему вам, возможно, придётся использовать TL2 вместо TL3.

Таким образом, для воспроизведения, как я думаю, вам нужно сделать следующее (обратите внимание, что я добавил вторую группу):

(WordPress)

  • Создайте пользователя WordPress «Steaky» с адресом электронной почты steaky@cat.com
  • Добавьте wpdc_custom_sso_params, чтобы установить группу dogs для всех пользователей, которые входят в систему, используя $params['groups'] = 'dogs';

(Discourse)

  • Создайте пользователя «Steaky» с адресом электронной почты steaky@cat.com
  • Легитимно установите для Steaky уровень доверия trust_level_1 (без блокировки)
  • Создайте группы «cats» и «dogs» и установите параметр «Уровень доверия, автоматически предоставляемый участникам» на 2 для группы «cats»
  • Добавьте Steaky в группу cats
2 лайка

Удалось ли вам дополнительно разобраться в этой проблеме?

1 лайк

Я приостановил изучение этой ошибки после своего последнего ответа, но я ознакомился с вашими замечаниями и очень ценю их! Поразительно, что у вас есть такой подробный лог. Это всё ещё в моей работе, и я скоро вернусь к этому, так что спасибо, что написали. :smiley:

3 лайка