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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top