SSO - пользовательское изображение не обновляется после первоначальной установки

Мы интегрируем Discourse с платформой на PHP/Laravel, где реализован SSO. Пользовательские аватары обновляются только один раз. Однако, если я изменяю фотографию профиля в платформе Laravel, пользовательское изображение не обновляется в Discourse, даже после выхода из системы и повторного входа.

Даже при передаче параметра ‘avatar_force_update’ со значением true, пользовательское изображение аватара не перезаписывается.

Просто обновлю информацию:

Я вижу, что URL изображения профиля обновил запись SSO, однако новое изображение профиля не отображается в Discourse, даже после выхода из системы и повторного входа.

А что, если перезагрузить браузер?

Включена ли у вас настройка сайта discourse_connect_overrides_avatar?

Спасибо за ответ. Если я перезагружу браузер, открою его в режиме инкогнито или даже выйду из системы и войду снова, обновление не происходит.
Как уже упоминалось, обновление происходит только в первый раз. Например:

  • Новый пользователь имеет аватар и впервые подключается к Discourse через SSO — аватар обновляется.
  • Или у пользователя изначально нет аватара, и он обновляет его на платформе — в этом случае изменения отражаются в Discourse.
  • Но если у пользователя уже есть аватар и он обновляет его на платформе, то в Discourse это не отражается, даже если выйти из системы и войти снова или попробовать в другом браузере. Я вижу, что URL изображения профиля в записи SSO обновился, но сам аватар не изменился.

Спасибо за ваш ответ, Ренато! У меня не отмечены другие флажки.

Вы можете включить подробное ведение журнала и просмотреть логи, чтобы проверить, передаёт ли система SSO информацию об аватаре.

Стоит попробовать включить настройку discourse connect overrides avatar, выйти из системы Discourse, а затем снова войти. Я почти уверен, что обновление аватара должно работать и без включения этой настройки, если в полезной нагрузке SSO установлен параметр avatar_force_update со значением true. Однако код, отвечающий за это, довольно сложен: discourse/app/models/discourse_connect.rb at 2ff3f44b957268718e03554fb25d485e1d449ed5 · discourse/discourse · GitHub.

Если вы не можете включить эту настройку или просто хотите понять, что происходит, проверьте, интерпретируется ли значение параметра avatar_force_update, которое вы передаёте, как булево true в Discourse. В некоторых фреймворках (особенно в WordPress) булевы значения преобразуются в 0 или 1. Чтобы обойти эту проблему, Discourse принимает строку "true" в качестве булевого значения в полезной нагрузке SSO. Вы можете подтвердить это, посмотрев на значение поля avatar_force_update в записи SSO, отображаемой на странице администратора пользователя, или включив настройку подробного ведения журнала, о которой упомянул Джей.