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.

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top