2012-05-12 2 views
1

comment puis-je récupérer les actions i définies dans mes accessrules fonctionYii je veux obtenir toutes les actions qu'un utilisateur est autorisé à effectuer

public function accessRules(){ 
    return array(
       'allow', 
       'actions'=>array('create','update' ...), 
        .... 
       ) 
} 

ai-je besoin pour dislay raison quelque chose comme si (in_array (» create ', $ actions)) echo CHtml :: link (' lien pour créer un formulaire ') ou peut-être quelque chose comme si (user-> isAutorizedToPerfoem (' create ')).

Merci à l'avance

Répondre

3

Je pense que cela est impossible lorsque vous utilisez le filtre AccessControl. Les données d'autorisation sont dans ce cas enregistrées directement dans le contrôleur, vous devez donc être dans le contrôleur pour voir le accessRules(). Et vous ne pouvez pas vérifier l'accès manuellement, autant que je sache. Le filtre fait le travail là-bas. Vous pouvez voir vos règles d'accès en appelant $ this-> accessRules, mais vous devez être dans le contrôleur.

Vous devez probablement utiliser RBAC et enregistrer vos règles d'accès en externe. Lisez ici pour plus d'informations: Yii Documentation - role based access control

Il existe également une extension Yii très puissante appelée Rights, qui fournit un backend pour RBAC.

Cela peut sembler exagéré pour le moment, mais le RBAC est inégalé en termes de flexibilité. Si vous l'utilisez, vous pouvez vérifier l'accès comme Yii::app->user->checkAccess('post.create'), et bien d'autres choses.

+0

Existe-t-il un moyen d'obtenir les rôles accessibles par action d'une manière ou d'une autre? – Rohan

Questions connexes