Pregunta

Es un seguimiento de la pregunta Resque, Devise y autenticación de administrador .

Suponiendo que tenemos:

User.last.role #=> 'admin'

El nuevo problema es: cómo obtener acceso al usuario actual (ya que tengo User.role, que puede ser 'admin' o 'user') desde esto:

require 'resque/server'

class SecureResqueServer < Resque::Server

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

end

Gracias.

¿Fue útil?

Solución 2

Bueno, todo es mucho más sencillo. Para obtener la instancia de usuario actual directamente de Warden, simplemente:

env['warden'].user

De esta manera, utilizando Devise y el sistema de roles descrito anteriormente, puede:

require 'resque/server'

class SecureResqueServer < Resque::Server

  before do
    redirect '/login' unless env['warden'].user.role == 'admin'
  end
end

Otros consejos

Solo tengo experiencia con authlogic y Resque, pero esto parece relevante:

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

El autor actualizó su blog y sugiere que agregue lo siguiente a sus rutas, obviamente adaptándolo a sus necesidades específicas:

authenticate :admin do
  mount Resque::Server.new, :at => "/resque"
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top