J’ai implémenté une stratégie OmniAuth personnalisée ainsi qu’un authentificateur qui étend Auth::ManagedAuthenticator de Discourse.
Cependant, lors des tests dans mon environnement de développement, je finis par atterrir sur cet écran au lieu d’être connecté immédiatement :
Les informations sont correctement remplies à partir du hachage d’authentification, mais je ne souhaite pas que les utilisateurs puissent modifier leur nom d’utilisateur ou leur nom ici. Comment modifier mon implémentation ou les paramètres du forum pour que cet écran soit ignoré et que le compte utilisateur soit créé immédiatement (s’il n’existe pas) et que l’utilisateur soit connecté ?
Authentificateur :
class MyAuthenticator < ::Auth::ManagedAuthenticator
def name
'my_authenticator'
end
def enabled?
true
end
def register_middleware(omniauth)
omniauth.provider name.to_sym, {}
end
end
Stratégie :
require 'omniauth'
...
class OmniAuth::Strategies::MyAuthenticator
include OmniAuth::Strategy
option :name, "my_authenticator"
...
def callback_phase
...
@user_id = ...
@username = ...
@avatar = ...
@email = ...
...
end
...
def auth_hash
{
provider: "my_authenticator",
uid: @user_id,
info: {
name: @username,
image: @avatar,
email: @email
},
extra: {}
}
end
end
OmniAuth.config.add_camelization('my_authenticator', 'MyAuthenticator')
plugin.rb :
before_auth do
...
auth_provider authenticator: MyAuthenticator.new()
...
end
