Evitar desvincular cuentas sociales

Estoy usando Discourse para una comunidad de juegos donde no tiene sentido poder desvincular las cuentas de Steam y Discord, ya que solo causará problemas. ¿Cómo puedo evitar que los usuarios desvinculen sus cuentas? Sé que el plugin SAML lo impide, pero como uso Discourse para sincronizar rangos tanto en el juego como en Discord, realmente no quiero que los usuarios las desvinculen. Si acaso, preferiría tener que desvincularlas manualmente.

Como nota al margen, ¿sería posible desde el panel de administración mostrar los Steam64 ID y los Discord ID? No son realmente confidenciales en sí mismos y sería muy útil tener esa información disponible de inmediato. Tampoco están expuestos a través de la API, que es bastante limitada para mi caso de uso.

Puedes ocultar el botón de eliminar con esto. ¿De esa manera los usuarios no podrán desactivarlo?

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

Eso cumpliría parcialmente el objetivo, pero ¿alguien sabría si existe una forma de hacerlo imposible? Teóricamente, podrían simplemente entrar al inspector de elementos del navegador y mostrarlo de nuevo.

Edición: Tras investigar un poco sobre esto, encontré lo siguiente: discourse/lib/auth/managed_authenticator.rb at main · discourse/discourse · GitHub

Lo que me pareció interesante fue la parte de “can revoke” (puede revocar), aunque no estoy muy seguro de si puedo modificar la autenticación integrada de Discord. ¿Alguien sabe si esto sería posible?

Edición 2: Intenté modificar el inicio de sesión de Steam en Discourse, pero no tuve éxito (probablemente debido a mi falta de conocimientos de Ruby), pero esto es lo que intenté:

# 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'

Como referencia, el archivo que modifiqué pertenece a esta extensión.

Edición: Estaba editando totalmente la parte incorrecta del plugin. Logré desactivar la función por completo para Steam. Ahora solo necesito averiguar cómo hacer lo mismo con el inicio de sesión de Discord, ya que ese es un archivo central.