2016-09-23 10 views
0

Я использую драгоценный камень Doorkeeper в приложении Rails 4.X. Есть ли способ защитить маршрут для управления приложениями Oauth?Как защищать маршрут от привратника в Rails?

Например, мне бы хотелось, чтобы этот URL-адрес http://localhost:3000/oauth/applications был доступен для пользователей-разработчиков, отмеченных как админы.

Мои текущие маршруты.rb выглядят следующим образом.

Rails.application.routes.draw do 
mount RailsAdmin::Engine => '/admin', as: 'rails_admin' 

use_doorkeeper 
devise_for :users 

Благодарим за помощь.

ответ

1

Кажется, что швейцар может обрабатывать его инициализатор. Просто добавьте это, и оно работает.

admin_authenticator do 
    redirect_to new_user_session_url unless current_user && current_user.admin? 
end 
0

Я думаю, что с завещанию вы можете сделать что-то вроде этого

Rails.application.routes.draw do 
    mount RailsAdmin::Engine => '/admin', as: 'rails_admin' 
    devise_for :users 
    authenticate :user, lambda { |u| u.admin? } do 
    # the same would be authenticate :user, -> (u) { u.admin? } do 
    use_doorkeeper 
    end 
end 

Это наводит на мысль, что ваш User реагировать на admin? методом.

+0

Да. Но лучшее решение, я думаю, это использовать логику в привратнике, инициализированном. Исправлена ​​проблема. Спасибо, что ответите, тоже попробуем. :) – NewbieOnRails

+0

Это, безусловно, работает (я только что испытал для себя). Да, если драгоценный камень позволяет настроить его в инициализаторе, это будет правильное решение. – Aleksey