Percorsi personalizzati e dichiarativa Autorizzazione
-
24-10-2019 - |
Domanda
Non so se questo è stato risposto prima.
Ha percorsi personalizzati per gli utenti. Se ho accedere direttamente l'utente / utenti / 5 funziona il tutto. Se provo / profile o addirittura / utenti / current_user con dichiarativa Autorizzazione ottengo "Impossibile trovare l'utente senza un ID"
map.profile "profile", :controller => "users", :action => "show"
map.edit_profile 'profile/edit', :controller => 'users', :action => 'edit', :conditions => { :method => :get }
Il mio ApplicationController ha
before_filter {| c | Authorization.current_user = c.current_user}
e le mie authorization_rules ha user.id e current_user.id anche provato.
role :user do
includes :guest
has_permission_on :users, :to => [:show, :edit ] do
if_attribute :id => is { user.id }
end
end
Che cosa sto facendo di sbagliato?
Soluzione
Per i percorsi di tipo indice personalizzato utilizzare
filter_access_to:
Invece di
filter_resource_access
mi ha fatto troppo.
Altri suggerimenti
Io uso Authlogic, ma per quanto ne so "current_user" non sta per essere accessibile attraverso un percorso.
Si avrebbe bisogno di controllare, nel controllore, se params [: id] == "CURRENT_USER" (come una stringa) e poi fare un po 'di logica in base a che ... cioè:
if params[:id] == "current_user"
@user_id = current_user.id
else
@user_id = params[:id]
end
@user = User.find(@user_id)
Un esempio molto semplicistico, ma dovrebbe illustrare il tipo di logica che si sta andando ad avere bisogno di ottenere il current_user da un percorso personalizzato. Si potrebbe anche solo tracciare un percorso chiamato per current_user alla sua propria azione di controllo, ma non è molto riposante e sarebbe [probabilmente] funzionalità duplicati che già avete.