Domanda

È un seguito della domanda sull ' Resque, Devise and admin authentication .

Supponendo di avere:

User.last.role #=> 'admin'

Il nuovo problema è: come ottenere un accesso all'utente corrente (dato che ho User.role che può essere "admin" o "user") da questo:

require 'resque/server'

class SecureResqueServer < Resque::Server

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

end

Grazie.

È stato utile?

Soluzione 2

Bene, tutto è molto più semplice. Per ottenere l'istanza utente corrente direttamente da Warden, devi solo:

env['warden'].user

In questo modo, utilizzando Devise e il sistema di ruoli descritto sopra, puoi:

require 'resque/server'

class SecureResqueServer < Resque::Server

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

Altri suggerimenti

Ho solo esperienza con authlogic e Resque, ma questo sembra pertinente:

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

L'autore ha aggiornato il suo blog e suggerisce di aggiungere quanto segue ai tuoi percorsi, ovviamente adattandolo alle tue esigenze specifiche:

authenticate :admin do
  mount Resque::Server.new, :at => "/resque"
end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top