2017-10-11 6 views
0

Je veux utiliser des règles multiples dans un comportement.yii2: comment ajouter des règles multiples pour l'accès des comportements

comment puis-je résoudre ce problème?

public function behaviors() 
{ 
    return [ 
     'access' => [ 
      'class' => \yii\filters\AccessControl::className(), 
      'rules' => [ 
        [ 
        'actions' => ['file'], 
        'allow' => true, 
        'roles' => ['user2'], 
       ], 
        [ 
        'actions' => ['file'], 
        'allow' => false, 
        'roles' => ['document'], 
       ], 
      ], 
+0

pouvez-vous élaborer vos besoins. Comme je l'ai compris le fichier devrait être accessible uniquement à user2. Est-ce nécessaire? – Sucharitha

Répondre

0

La question est pas tout à fait clair pour moi, mais je pense que vous voulez faire quelque chose comme ça ...

étendre la classe AccesRule et mettre en œuvre la façon dont un rôle devrait être accessible

class AccessRule extends \yii\filters\AccessRule { 
protected function matchRole($user) 
    { 
     if (empty($this->roles)) { 
      return true; // no roles defined = access ok 
     } 
     foreach ($this->roles as $role) { 
      // return true if role is allowed based on $user (define your logic) 
     } 
     return false; // no match, ie no access 
    } 
} 

Puis ajouter cette nouvelle classe de règle pour vous AccessControl ...

'access' => [ 
    'class' => \yii\filters\AccessControl::className(), 
    'ruleConfig' => ['class' => '\my\namespace\AccessRule'], 
    'rules' => [ 
     ... 
    ], 
] 

Nota: Le code n'a pas été testé .