他のユーザーのSSOレコードにあるexternal_idにアクセスすることは可能ですか?

現在のログインユーザーのSSOレコードから external_id にアクセスする際に問題はありません。以下のアプローチを使用しています。

api.getCurrentUser().external_id

しかし、現在のログインユーザーが他のユーザーのプロファイル概要(**例:**人物X)を表示している場合、いくつかのボタン/リンクで問題が発生します。この external_id は、当社のウェブサイトで使用されるプライマリ識別子であり、ウェブサイトからのリダイレクトやアクションに使用します。管理者ユーザーAPIを使用すると機能しますが、当然ながら非管理者ユーザーアカウントでは機能しません。

これは可能でしょうか?また、その方法は?

ユーザーシリアライザーに external_id を追加するプラグインが必要だと思います。

  add_to_serializer(:user, :external_id) do
     object.external_id
  end
「いいね!」 3

以下のようなものだと思います。

# プラグインの 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_iduser のプロパティではなく、single_sign_on_record のプロパティです。これには以下の件で関わったことを覚えています。

「いいね!」 3

皆さん、ご意見ありがとうございました。最終的には、ログイン時にアプリケーションから同期されるカスタムユーザーフィールドを使用してこれを行いました。

「いいね!」 1

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.