J'essaie d'ajouter une autorisation à une application assez grande qui existe déjà, mais je dois masquer un peu les détails.autorisations d'autorisation déclarative sur les rôles
Voici le fond:
Dans notre application, nous avons un certain nombre ou des rôles qui sont hiérarchiques, à peu près comme ceci:
BasicUser -> SuperUser -> Admin -> SuperAdmin
Pour autorisation chaque instance de modèle utilisateur a un attribut « rôle » ce qui correspond à ce qui précède.
Nous avons un contrôleur RESTful "Users" qui est namespaced sous Backoffice. Bref, c'est Backoffice :: UsersController.
class Backoffice::UsersController < ApplicationController
filter_access_to :all
#... RESTful actions + some others
end
Alors, voici le problème:
Nous voulons que les utilisateurs soient en mesure de donner des autorisations pour les utilisateurs d'éditer des utilisateurs mais seulement si elles ont un rôle « plus petit » que ce qu'ils ont actuellement. J'ai créé ce qui suit dans authorization_rules.rb
authorization do
role :basic_user do
has_permission_on :backoffice_users, :to => :index
end
role :super_user do
includes :basic_user
has_permission_on :backoffice_users, :to => :edit do
if_attribute :role => is_in { %w(basic_user) }
end
end
role :admin do
includes :super_user
end
role :super_admin do
includes :admin
end
end
Et malheureusement, c'est aussi loin que je suis arrivé, la règle ne semble pas s'appliquer.
- Si je commente la règle sur, personne ne peut modifier
- Si je laisse la règle que vous pouvez modifier tout le monde
J'ai aussi essayé quelques variations sur le if_attribute:
if_attribute :role => is { 'basic_user' }
if_attribute :role => 'basic_user'
et ils obtiennent le même effet. Quelqu'un a-t'il des suggestions?