다른 사용자의 SSO 기록에서 external_id에 접근할 수 있는 방법이 있나요?

아래 접근 방식으로 현재 로그인된 사용자의 SSO 기록에서 external_id에 접근하는 데에는 문제가 없습니다:

api.getCurrentUser().external_id

그러나 현재 로그인된 사용자가 다른 사람의 프로필 요약(예: Person 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는 user의 속성이 아니라 single_sign_on_record의 속성입니다. 다음 코드를 다뤄본 적이 있어서 기억하고 있습니다:

모두의 의견을 감사히 받았습니다. 결국 로그인 시 애플리케이션에서 동기화되는 사용자 정의 필드를 통해 이 문제를 해결했습니다.