У нас нет проблем с доступом к external_id из записи SSO текущего вошедшего пользователя с помощью следующего подхода:
api.getCurrentUser().external_id
Однако у нас есть некоторые кнопки/ссылки, когда текущий вошедший пользователь просматривает краткую информацию профиля другого человека (например, Человек X). Этот external_id является основным идентификатором, используемым на нашем сайте, и мы будем применять его для некоторых перенаправлений и действий с нашего сайта. Использование API администратора работает, но, очевидно, не подходит для учетных записей обычных пользователей.
# в блоке after_initialize плагина
after_initialize do
# Редактирование: вероятно, также стоит проверить, что `SiteSetting.enable_discourse_connect` возвращает `true`
add_to_serializer(:user, :external_id) {object&.single_sign_on_record&.external_id}
end
external_id — это свойство single_sign_on_record, а не user. Я помню это, потому что мне приходилось иметь дело с этим:
Спасибо всем за ваши предложения. В итоге мы реализовали это через пользовательские поля, которые синхронизируются с нашим приложением при входе в систему.