소셜 계정 연결 해제 방지

게이밍 커뮤니티에 Discourse를 사용 중인데, Steam과 Discord 계정을 분리할 수 없도록 하는 것이 합리적이며, 분리할 경우 문제가 발생하기 때문에 어떻게 하면 사용자가 계정을 분리하는 것을 막을 수 있을까요? SAML 플러그인이 이를 방지하는 것은 알고 있지만, 게임 내와 Discord에서의 랭크 동기화를 Discourse로 처리하고 있기 때문에 사용자가 링크를 해제하는 것을 정말 원하지 않습니다. 가능하다면 제가 수동으로 링크를 해제하는 방식으로 전환하고 싶습니다.

참고로, 관리자 화면에서 Steam64 ID와 Discord ID를 표시할 수 있는 방법이 있을까요? 이 정보들은 그 자체로 기밀이라고 보기 어렵고, 쉽게 접근할 수 있다면 매우 유용할 것입니다. 또한 현재 API를 통해 이 정보들을 노출할 수 없는데, 제 사용 사례에는 API 기능이 다소 제한적입니다.

삭제 버튼을 다음과 같이 숨길 수 있습니다. 이렇게 하면 사용자가 비활성화할 수 없게 되나요?

.btn-danger, .json-schema-editor-modal .json-editor-btn-delete {
    display: none;
}

그렇게 하면 일부는 해결될 수 있지만, 그렇게 하는 것을 불가능하게 만드는 방법이 있는지 아는 사람이 있을까요? 이론적으로 브라우저의 '요소 검사’에 들어가서 숨김을 해제할 수 있을 것입니다.

수정: 이 문제에 대해 조사한 끝에 이것을 발견했습니다: discourse/lib/auth/managed_authenticator.rb at main · discourse/discourse · GitHub

흥미로웠던 부분은 “can revoke” 부분이었는데, 내장된 Discord 인증을 수정할 수 있을지 확신이 서지 않습니다. 이것이 가능한지 아는 사람이 있을까요?
수정 2: Steam Discourse 로그인을 수정해 보았지만 실패했습니다(아마도 Ruby에 대한 지식이 부족해서인 것 같습니다). 제가 시도한 내용은 다음과 같습니다:

# frozen_string_literal: true

# name: Steam authentication with Discourse
# about: Authenticate with Discourse with Steam
# version: 2.0.1
# author: J. de Faye, tgxworld

# omniauth-openid is not included in core since v2.4.0.beta10
unless defined? OmniAuth::Strategies::OpenID
  gem 'ruby-openid', '2.9.2', require: false
  gem 'rack-openid', '1.3.1', require: false
  gem 'omniauth-openid', '1.0.1'
end

gem 'omniauth-steam', '1.0.6'

register_svg_icon "fab-steam" if respond_to?(:register_svg_icon)

def can_revoke?
  false
end

register_asset 'stylesheets/steam-login.scss'

[
  "../lib/auth/steam_authenticator.rb",
  "../lib/validators/enable_steam_logins_validator.rb"
].each { |path| load File.expand_path(path, __FILE__) }

auth_provider authenticator: Auth::SteamAuthenticator.new, icon: 'fab-steam'

참고로, 제가 수정한 파일은 이 확장 프로그램에서 가져온 것입니다.

수정: 제가 완전히 잘못된 부분을 수정하고 있었던 것 같습니다. Steam의 경우 해당 기능을 완전히 비활성화하는 데 성공했습니다. 이제 핵심 파일인 Discord 로그인에 대해 이것을 어떻게 적용할지 알아내야 합니다.