Devise.Obtenha a função current_user
-
27-10-2019 - |
Pergunta
É o seguinte da pergunta sobre Resque, Devise e autenticação do administrador .
Supondo que temos:
User.last.role #=> 'admin'
O novo problema é: como obter acesso ao usuário atual (já que tenho User.role, que pode ser 'admin' ou 'usuário') a partir deste:
require 'resque/server'
class SecureResqueServer < Resque::Server
before do
#redirect '/login' unless current_user.role == 'admin'
end
end
Obrigado.
Solução 2
Bem, tudo é muito mais simples. Para obter a instância do usuário atual diretamente do Warden, você apenas:
env['warden'].user
Dessa forma, usando o Devise e o sistema de funções descrito acima, você pode:
require 'resque/server'
class SecureResqueServer < Resque::Server
before do
redirect '/login' unless env['warden'].user.role == 'admin'
end
end
Outras dicas
Tenho apenas experiência com Authlogic e Resque, mas isso parece relevante:
http://blog.kiskolabs.com/post/776939029/rails3-resque-devise
O autor atualizou seu blog e sugere que você adicione o seguinte às suas rotas, obviamente adaptando-o às suas necessidades específicas:
authenticate :admin do
mount Resque::Server.new, :at => "/resque"
end