Sto usando Discourse per una community di gaming, dove disassociare gli account Steam e Discord non ha senso e creerebbe solo problemi. Come posso impedire agli utenti di disassociare gli account? So che il plugin SAML lo blocca, ma dato che ho usato Discourse per sincronizzare i ranghi sia nel gioco che su Discord, non vorrei assolutamente che gli utenti scollegassero i propri account. Anzi, preferirei doverlo fare manualmente.
A margine, dalla parte dell’amministratore sarebbe possibile visualizzare gli Steam64 ID e gli ID di Discord? Non sono propriamente informazioni riservate e sarebbero molto utili averle subito a disposizione. Inoltre, non sono esposti tramite l’API, che è piuttosto limitata per il mio caso d’uso.
Questo aiuterebbe in parte, ma qualcuno sa se esiste un modo per renderlo impossibile? Teoricamente potrebbero semplicemente entrare nell’ispezione degli elementi del browser e riattivarlo.
Ciò che ho trovato interessante è la parte “can revoke” (può revocare), ma non sono sicuro di poter modificare l’autenticazione Discord integrata. Qualcuno sa se questo sarebbe possibile?
Modifica 2: ho provato a modificare il login Steam su Discourse senza successo (probabilmente a causa della mia scarsa conoscenza di Ruby), ma ecco cosa ho provato:
# 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'
Per riferimento, il file che ho modificato proviene da questa estensione: qui.
Modifica: stavo modificando completamente la parte sbagliata del plugin; sono riuscito a disabilitare completamente la funzionalità per Steam. Ora devo solo capire come fare lo stesso con il login Discord, dato che si tratta di un file core.