5

Ho avuto quasi gli stessi problemi di Victor Martin (è possibile vedere le domande qui poste).Autorizzazione dichiarativa e if_attribute non funzionanti

Ho un'autorizzazione dichiarativa che funziona praticamente per tutto ciò che non comporta l'uso di condizionali. Per esempio.

has_permission_on :users, :to => [:edit, :update, :destroy] do 
if_attribute :user => is { current_user } 
end 

Ci sono dei problemi comuni con l'autorizzazione dichiarativa? Sto usando authlogic e sono sospettoso che il metodo 'current_user' nel controller dell'applicazione potrebbe essere la fonte del problema.

+0

ho finito per usare Cancan per authorizaiton - lo consiglio vivamente – digitalWestie

risposta

4

Si noti che se si utilizza "filter_access_to" nei controller, è necessario assicurarsi di avere ": attribute_check => true". Senza di esso, le dichiarazioni condizionali "if_attribute" non fanno nulla.

Maggiori informazioni su questo in the Declarative Authorization docs

1

È necessario aggiungere questo alla vostra ApplicationController se non l'hai già:

before_filter :set_current_user 
protected 
def set_current_user 
    Authorization.current_user = current_user 
end 

Poi le regole sarebbe simile a questa:

has_permission_on :users, :to => [:edit, :update, :destroy] do 
    if_attribute :user => is { user } 
end 

Per quanto ne so declarative_authorization non lo fa chiama qualsiasi metodo sul crontroller e non sa che cosa significa current_user nell'esempio, ma ti dà un'istanza di Authorization.current_user chiamata user che puoi utilizzare nel tuo file authorization_rules.rb.

+0

OK, ho provato usando 'utente' invece di 'current_user'. Ora ho fatto che ho praticamente tutto quanto sopra ma non funziona ancora. :/ – digitalWestie

+0

Ricevi errori o solo "autorizzazione negata"? Cosa dice il tuo diario? –