Пример #1
0
 /**
  * List permission action.
  *
  * @param int $id
  * @param int|null $level
  */
 public function permissions($id = 1, $level = null)
 {
     $roles = $this->_Roles->find('list')->toArray();
     /** @var \Acl\Model\Entity\Aco $root */
     $root = $this->_Permissions->Acos->find()->where(['id' => $id])->first();
     $acos = $root !== null ? $this->_Permissions->Acos->getChildren($root->get('id')) : [];
     if ($level !== null) {
         $level++;
     }
     $permissions = [];
     $isAjax = $this->request->is('ajax');
     if ($isAjax) {
         $cacheKey = 'permissions_aco_' . $root->get('id');
         $permissions = Cache::read($cacheKey, __FUNCTION__);
         if ($permissions == false) {
             $permissions = $this->_Permissions->format($acos, $this->_Permissions->Aros->getRole($roles));
             Cache::write($cacheKey, $permissions, __FUNCTION__);
         }
     }
     $this->set('_serialize', false);
     $this->set(compact('roles', 'acos', 'level', 'permissions'));
     if ($isAjax) {
         $this->render($this->plugin . '.ajax/permissions');
     }
 }