Ideare.Ottieni il ruolo current_user
-
27-10-2019 - |
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.
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