/** * 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'); } }