Estou usando o Discourse para uma comunidade de jogos, onde desassociar suas contas do Steam e do Discord não faz sentido e só causará problemas. Como posso impedir que os usuários desassociem as contas? Sei que o plugin SAML impede isso, mas, como usei o Discourse para facilitar a sincronização de ranks tanto no jogo quanto no Discord, realmente não quero que os usuários desvinculem as contas. Se for o caso, preferiria ter que desvincular manualmente.
Como observação lateral, do lado do administrador, seria possível exibir o Steam64 ID e os IDs do Discord? Eles não são realmente confidenciais, por assim dizer, e seriam informações muito úteis para ter prontamente disponíveis. Além disso, eles não são expostos via API, que é bastante limitada para o meu caso de uso.
Isso resolveria parcialmente o problema, mas alguém saberia se há uma maneira de tornar isso impossível? Teoricamente, eles poderiam simplesmente entrar no inspecionar elemento do navegador e reexibir o conteúdo.
O que achei interessante foi a parte “can revoke” (pode revogar), mas não tenho certeza se posso modificar a autenticação nativa do Discord. Alguém sabe se isso é possível?
Edição 2: Tentei modificar o login do Steam no Discourse, mas não tive sucesso (provavelmente devido à minha falta de conhecimento em Ruby), mas aqui está o que tentei:
# 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'
Para referência, o arquivo que modifiquei pertence a esta extensão.
Edição: Eu estava editando completamente a parte errada do plugin. Consegui desativar o recurso inteiramente para o Steam. Agora só preciso descobrir como fazer o mesmo com o login do Discord, já que esse é um arquivo do núcleo.