Using Resque and Devise, i have roles for User, like:
User.first.role #=> admin User.last.role #=> regular
I want to setup an authentication for Resque. So, inside config/routes.rb i have:
namespace :admin do mount Resque::Server.new, :at => "/resque", :as => :resque end
And, of course it's accessible for all logged in users.
Is there any way to use a role from User.role? It should be accessible only by users with 'admin' role.
Thanks a lot.
Use a route constraint, in your routes.rb
file:
resque_constraint = lambda do |request| request.env['warden'].authenticate? and request.env['warden'].user.admin? end constraints resque_constraint do mount Resque::Server, :at => "/admin/resque" end
in your routes.rb
file:
authenticate :user, lambda {|u| u.role == 'admin' } do mount Resque::Server.new, :at => "/resque" end
Also, make sure you have devise_for :users
somewhere in that file
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With