2017-06-02 5 views
0

私はZend_ACLセットアップ(これに基づいて:Zend Framework: need typical example of ACL)を持っています。Zend Framework 1 ini config for ACL

そして私はアクセス権を設定するための設定ファイルを持っていますが、私の問題は、私は特定のcontroller.actionに複数のロールへのアクセス権を与えない方法

; roles 
acl.roles.guest = null 
acl.roles.admin = null 
acl.roles.company = null 
acl.roles.user = null 
acl.roles.super_admin = null 

; resources 
acl.resources.deny.all.all = guest 

acl.resources.allow.index.all = guest 
acl.resources.allow.index.all = company 

あるので、問題はこの1つである:

acl.resources.allow.index.all = guest 
acl.resources.allow.index.all = company 

私の質問は、これを設定して、複数のロールがアクセスできるようにする方法です。

答えて

0

私はあなたがあなたのために働くようにコードを微調整できると信じています。その後Zend Framework: need typical example of ACL

protected function _addResources($resources) {   

    foreach ($resources as $permissions => $controllers) {   

     foreach ($controllers as $controller => $actions) { 
      if ($controller == 'all') { 
       $controller = null; 
      } else { 
       if (!$this->has($controller)) { 
        $this->add(new Zend_Acl_Resource($controller)); 
       } 
      } 

      foreach ($actions as $action => $role) { 
       if ($action == 'all') { 
        $action = null; 
       } 
       if ($permissions == 'allow') { 
        if(strpos($role, ',') !== false) { 
         $multipleRoles = explode(',',$role); 
         $this->allow($multipleRoles, $controller, $action); 
        } else { 
         $this->allow($role, $controller, $action); 
        } 
       } 
       if ($permissions == 'deny') { 
        if(strpos($role, ',') !== false) { 
         $multipleRoles = explode(',',$role); 
         $this->deny($multipleRoles, $controller, $action); 
        } else { 
         $this->deny($role, $controller, $action); 
        } 
       } 
      } 

     } 
    } 
} 

からコードを変更

acl.resources.allow.index.all = guest,company 

のようにiniファイルを変更し、私はこのコードをテストしていませんが、私の理解では、それが動作するはずということです。

+0

$ this-> deny(multipleRoles、$ controller、$ action)に$を追加するのを忘れました。 – Uffo

+0

私はそれを修正し、それをテストした、それは動作します、ありがとう! – Uffo

+0

それがあなたのために働いたことを知ってよかった! – ksoni

関連する問題