J'utilise authlogic (2.1.3) et declarative_authorization (0.4.1) pour contrôler l'accès à mon application. Toutes les autorisations fonctionnent comme prévu excepté les utilisateurs auxquels est affecté le rôle Editeur ne peuvent pas modifier leurs paramètres de profil (current_user fourni par authlogic) (partie du modèle User).Autorisation déclarative du modèle d'utilisateur 'if_attribute'
Le rôle 'Invité' fonctionne comme prévu, tout comme le 'Administrateur'. J'utilise un utilisateur (nommé 'bob') auquel le rôle d'éditeur a été assigné. Vérifié dans la base de données et dans une session IRB.
contenu pertinent du fichier authorization_rules.rb:
role :guest do
# allow anonymous 'user' to create an account
has_permission_on :users, :to => [:new, :create]
# allow anonymous 'user' 'read-only' actions
has_permission_on :users, :to => [:index, :show]
end
role :editor do
# allow authenticated User to see other users
has_permission_on :users, :to => [:index, :show]
# allow authenticated User to update profile; doesn't work
has_permission_on :user, :to => [:edit, :update] do
if_attribute :user => is { user }
end
end
role :administrator do
# 'full control'
has_permission_on :users, :to => [:index, :show, :new, :create, :edit, :update, :destroy]
end
Je crois que le problème est lié à l'if_attribute: user => {user}. if_attribute semble suggérer que: l'utilisateur doit être un attribut (ou une propriété) de la chose en cours de test, dans ce cas un modèle User, plutôt que d'être la chose elle-même. J'ai cherché une méthode if_self ou quelque chose de similaire, mais je n'ai rien vu.
L'aide est appréciée.