Разрабатывают. Получить роль current_user - PullRequest
1 голос
/ 07 сентября 2011

Это ответ на вопрос Resque, Devise и admin admin .

Предполагается, что у нас есть:

User.last.role #=> 'admin'

Новая проблема: как получить доступтекущему пользователю (так как у меня есть User.role, который может быть 'admin' или 'user') из этого:

require 'resque/server'

class SecureResqueServer < Resque::Server

  before do
    #redirect '/login' unless current_user.role == 'admin'
  end

end

Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 сентября 2011

Ну, все намного проще. Чтобы получить текущий экземпляр User напрямую из Warden, вам достаточно:

env['warden'].user

Таким образом, используя Devise и систему ролей, описанную выше, вы можете:

require 'resque/server'

class SecureResqueServer < Resque::Server

  before do
    redirect '/login' unless env['warden'].user.role == 'admin'
  end
end
0 голосов
/ 07 сентября 2011

У меня есть только опыт работы с authlogic и Resque, но это кажется уместным:

http://blog.kiskolabs.com/post/776939029/rails3-resque-devise

Автор обновил свой блог и предлагает добавить следующее в свои маршруты, очевидно, с учетомэто для ваших конкретных потребностей:

authenticate :admin do
  mount Resque::Server.new, :at => "/resque"
end
...