لقد قمت بتنفيذ استراتيجية OmniAuth مخصصة بالإضافة إلى مصادق يمتد من Auth::ManagedAuthenticator الخاص بـ Discourse.
ومع ذلك، عند اختبار ذلك في بيئة التطوير الخاصة بي، أنتهي في النهاية بهذه الشاشة بدلاً من تسجيل الدخول فورًا:
تم ملء المعلومات بشكل صحيح من هاش المصادقة، ومع ذلك، لا أريد أن يتمكن المستخدمون من تغيير اسم المستخدم أو الاسم هنا. كيف يمكنني تغيير تنفيذي / إعدادات المنتدى لتجاوز هذه الشاشة وإنشاء حساب المستخدم وتسجيل الدخول فورًا (إذا لم يكن موجودًا)؟
المصادق:
class MyAuthenticator < ::Auth::ManagedAuthenticator
def name
'my_authenticator'
end
def enabled?
true
end
def register_middleware(omniauth)
omniauth.provider name.to_sym, {}
end
end
الاستراتيجية:
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
