Можно ли получить external_id из SSO-записи другого пользователя?

У нас нет проблем с доступом к external_id из записи SSO текущего вошедшего пользователя с помощью следующего подхода:

api.getCurrentUser().external_id

Однако у нас есть некоторые кнопки/ссылки, когда текущий вошедший пользователь просматривает краткую информацию профиля другого человека (например, Человек X). Этот external_id является основным идентификатором, используемым на нашем сайте, и мы будем применять его для некоторых перенаправлений и действий с нашего сайта. Использование API администратора работает, но, очевидно, не подходит для учетных записей обычных пользователей.

Возможно ли это и как это реализовать?

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

Что-то вроде:

  add_to_serializer(:user, :external_id) do
     object.external_id
  end

Я думаю, это будет что-то вроде:

# в блоке 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. Я помню это, потому что мне приходилось иметь дело с этим:

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