So überspringen Sie das Fenster „Neues Konto erstellen" bei Verwendung einer benutzerdefinierten ManagedAuthenticator + OmniAuth-Strategie?

Ich habe eine benutzerdefinierte OmniAuth-Strategie implementiert sowie einen Authenticator, der Discourses Auth::ManagedAuthenticator erweitert.

Wenn ich dies jedoch in meiner Entwicklungsumgebung teste, lande ich schließlich auf diesem Bildschirm, anstatt sofort eingeloggt zu werden:

Die Informationen werden zwar korrekt aus dem Auth-Hash ausgefüllt, aber ich möchte nicht, dass Benutzer hier ihren Benutzernamen oder Namen ändern können. Wie muss ich meine Implementierung bzw. die Foreneinstellungen anpassen, damit dieser Bildschirm übersprungen wird und das Benutzerkonto sofort erstellt (falls es noch nicht existiert) und der Benutzer eingeloggt wird?

Authenticator:

class MyAuthenticator < ::Auth::ManagedAuthenticator

    def name
        'my_authenticator'
    end

    def enabled?
        true
    end

    def register_middleware(omniauth)
        omniauth.provider name.to_sym, {}
    end
    
end

Strategie:

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

Das kommt in einigen Wochen

Wenn ich den PR durchgehe, sieht es so aus, als könnte dies einfach durch Ändern der Einstellungen aktiviert werden, und es wäre nach dem Release keine Codeänderung am benutzerdefinierten Authentifizierer mehr erforderlich, oder?

Genau. Ich glaube, @david plant, einen Merge eine oder zwei Wochen nach unserem Release 2.5 am 2020-06-25T03:00:00Z durchzuführen.

Dies ist jetzt zusammengeführt