カスタム ManagedAuthenticator + OmniAuth 戦略を使用する際に「Create New Account」ウィンドウをスキップする方法は?

カスタム OmniAuth 戦略と、Discourse の Auth::ManagedAuthenticator を拡張する authenticator を実装しました。

しかし、開発環境でテストしているうちに、すぐにログインされるのではなく、この画面が表示されてしまいます。

認証ハッシュから情報が正しく入力されていますが、ユーザーにこの画面でユーザー名や名前を変更させたくありません。この画面をスキップし、ユーザーアカウントが(存在しない場合は)即座に作成されてログインされるように、実装やフォーラムの設定をどう変更すればよいでしょうか?

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

Strategy:

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
「いいね!」 1

これは数週間後にリリースされます

「いいね!」 4

PR を確認すると、設定を切り替えるだけで有効化でき、このリリース後、カスタム認証モジュールへのコード変更は不要ですね?

その通りです。@david の計画は、2020年6月25日 にバージョン 2.5 をリリースしてから 1〜2 週間後にマージすることだと考えています。

「いいね!」 5

これはすでにマージされました

「いいね!」 5