Using Resque and Devise, i have roles for User, like:
User.first.role #=> admin
User.last.role #=> regular
I want to setup an authent
There is always the new solution, type this in your routes.rb for rails > 3.1:
authenticate :admin do
mount Resque::Server.new, :at => "/resque"
end
And don't forget:
devise_for :admins
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
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
You can try subclassing the Resque::Server class this way:
require 'resque/server'
class SecureResqueServer < Resque::Server
before do
redirect '/login' unless some_condition_is_met!
end
end
And using it in your routes this way:
mount SecureResqueServer.new, :at => '/resque'
I got this information from this blog. Give it a try.