Объяснение
Я хочу остановить процесс авторизации клиентского приложения (под управлением OAuth2), приходящего в родительское приложение (под управлением Doorkeeper), чтобы узнать, какое клиентское приложение запрашиваетлогин.Таким образом, я могу найти clientID и динамически создать собственный экран входа в систему для клиентского приложения.Прямо сейчас мой клиент переходит к родителю, вызывается AuthorizationController, но перед вызовом new и я могу получить params[:client_id]
, authenticate_resource_owner!
вызывается с before_action
.Затем он отправляет пользователя на страницу входа, если он еще не вошел с родителем.Итак, прежде чем я смогу получить параметр, он перенаправляется.
Вопрос
authenticate_resource_owner!
хранится в файле помощника Doorkeeper.Я думал, что настроил его правильно, чтобы обойти помощника по умолчанию и перейти к моему, где я могу попытаться получить параметр и сохранить в сеансах до перенаправления, но я предполагаю, что мой маршрут не настроен правильно, и я не могу найти какой-либодокументация о том, как правильно это назвать.Кто-нибудь может помочь?
Код
Код для настройки клиента:
def setup_client
@client = Application.find_by(uid: params[:client_id])
session[:client_name] = @client.name
authenticate_resource_owner!
end
Я знаю, что первые две строки работают так, как я их поместил в CustomAuthorizationsController
с byebug
, и он сработал после входа в систему и перед перенаправлением обратно к клиенту и показал имя клиента, сохраненное в переменной сеанса.
В моем config/routes.rb
use_doorkeeper do
controllers :applications => 'doorkeeper/custom_applications'
controllers :authorizations => 'doorkeeper/custom_authorizations'
helpers :doorkeeper => 'doorkeeper/doorkeeper'
end
Файл помощника находится в app/helpers/doorkeeper/doorkeeper_helper.rb
Ошибка
При запускена моем сервере я получаю:
: from ~/ruby-2.5.0/gems/doorkeeper-5.0.2/lib/doorkeeper/rails/routes/mapper.rb:12:in `instance_eval'
~/settingsParentApp/config/routes.rb:65:in `block (2 levels) in <top (required)>': undefined method `helpers' for #<Doorkeeper::Rails::Routes::Mapper:0x00007ffd539b9c10> (NoMethodError)
Заключение
Я даже делаю это правильно?Есть ли более простой способ, встроенный в Doorkeeper, который я не вижу, чтобы получить эту информацию для настройки экрана входа?Или есть какая-то ошибка, которую я не вижу в том, как я вызываю вспомогательный файл?