J'ai un contrôleur d'administrateur et je souhaite que seuls les utilisateurs qui sont définis comme administrateur auraient accès à ce contrôleur.
Ma classe de capacité: P>
class AdminController < ApplicationController load_and_authorize_resource def index end def users_list end end
5 Réponses :
Vérifiez ceci pour ajouter des règles d'autorisation pour les contrôleurs non reposants: P>
https://github.com/ryanb/cancan/wiki/non- Contrôleurs reposants p>
J'espère que cela aide. P>
Ceci est parce que lorsque vous utilisez AUTORIZE_RESOURCE: CLASS => FALSE P>
blockQuote>
qui provoque des contrôles d'accès contre vos actions plutôt que sur le modèle. Remarque Cela fait malheureusement que cela provoque malheureusement les symboles d'accès génériques tels que peut [: index ,: users_list] ,: admin p>
blockQuote>
où le premier argument est une gamme d'actions de contrôleur, l'utilisateur peut accéder et le deuxième argument est le nom abrégé du contrôleur P>
Bonjour, Et si je veux diviser la ressource façonnée par des types. Par exemple, j'ai de nombreux rapports dans mes projets, mais pas de modèles pour eux. Différentes vues vont à la même action Build code> dans
reports_controller.rb code> avec nom de rapport spécifique. J'essaie de définir des capacités comme ceci:
peut: lire,: rapports, nom: ['commandes', 'paiements'] code>, puis vérifier les autorisations:
si peut? : LIRE,: RAPPORTS, NOM: 'COMMANDES' CODE> Mais ERROR
MÉTHODE INDERFINÉE "Nom" pour: Rapports: Symbole code> est arrivé. Avez-vous des idées?
Ceci est dû au fait que lorsque vous effectuez un contrôleur générique, mettez LOAD_AND_AUTHORIZE_RESOURCE.RESOURCE, le contrôleur d'application ou le contrôleur d'administrateur n'a pas pu trouver la classe actuelle qu'il vient de comme cet exemple. Cela fonctionnera.
class Admin::HomeController < Admin::ApplicationController def home end end class Admin::ApplicationController < ApplicationController load_and_authorize_resource :class => self.class end
Vous pouvez mettre l'autorisation dans votre contrôleur
can :manage, :controller_name
J'ai eu le même problème. Ma solution a été définie une capacité impossible. Déséquilibre de définir ce que seul l'administrateur peut faire, je défini ce que l'utilisateur Aucun administrateur ne peut pas faire. Dans votre code serait quelque chose comme ceci:
Contrôleur d'administrateur: p> capacité.rb: p>