커스텀 OmniAuth 전략과 Discourse의 Auth::ManagedAuthenticator를 확장한 인증기(authenticator)를 구현했습니다.
하지만 개발 환경에서 테스트를 해보면 즉시 로그인되는 대신 결국 아래 화면에 도달하게 됩니다:
정보는 auth hash에서 올바르게 채워져 있지만, 사용자가 여기서 사용자 이름이나 이름을 변경할 수 있기를 원하지 않습니다. 이 화면을 건너뛰고 사용자 계정이 즉시 생성(존재하지 않는 경우)되고 로그인되도록 구현이나 포럼 설정을 어떻게 변경해야 할까요?
인증기 (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
