autorisation déclarative et le if_attribute ne fonctionne pas
Question
J'ai eu presque les mêmes problèmes que Victor Martin (vous pouvez voir les questions posées ici).
J'ai travail d'autorisation déclarative pour à peu près tout ce qui ne concerne pas l'utilisation conditionals. Par exemple.
has_permission_on :users, :to => [:edit, :update, :destroy] do
if_attribute :user => is { current_user }
end
Y a-t-il des pièges avec déclarative autorisation? J'utilise authlogic et je me méfie de la méthode « current_user » dans le contrôleur d'application pourrait être la source du problème.
La solution
Notez que si vous utilisez « filter_access_to » dans vos contrôleurs, vous devez vous assurer que vous avez « : attribute_check => true ». Sans elle, les déclarations conditionnelles « de if_attribute » ne font rien.
Plus de détails sur cette dans l'autorisation déclarative docs
Autres conseils
Vous devez ajouter à votre ApplicationController si vous avez pas déjà:
before_filter :set_current_user
protected
def set_current_user
Authorization.current_user = current_user
end
Ensuite, vos règles se présente comme suit:
has_permission_on :users, :to => [:edit, :update, :destroy] do
if_attribute :user => is { user }
end
Pour autant que je sais declarative_authorization ne sait pas appeler des méthodes sur le crontroller et ne pas ce que current_user
moyens dans votre exemple, mais il donne de vous une instance de Authorization.current_user
appelé user
que vous pouvez utiliser dans votre fichier authorization_rules.rb
.