/** * @return array */ public function execute() { $resources = $this->resourceRepository->getAllResources(); $cResources = count($resources); $output = []; for ($i = 0; $i < $cResources; ++$i) { if ($this->modules->isActive($resources[$i]['module_name']) === true) { $module = $this->translator->t($resources[$i]['module_name'], $resources[$i]['module_name']); $output[$module][] = $resources[$i]; } } ksort($output); return ['resources' => $output, 'can_delete_resource' => $this->acl->hasPermission('admin/permissions/resources/delete'), 'can_edit_resource' => $this->acl->hasPermission('admin/permissions/resources/edit')]; }
/** * Erstellt den Cache für alle existierenden Ressourcen * * @return boolean */ public function saveResourcesCache() { $resources = $this->resourceRepository->getAllResources(); $cResources = count($resources); $data = []; for ($i = 0; $i < $cResources; ++$i) { $area = $resources[$i]['area']; if (isset($data[$area]) === false) { $data[$area] = []; } $path = $resources[$i]['module_name'] . '/' . $resources[$i]['controller'] . '/' . $resources[$i]['page'] . '/'; $path .= !empty($resources[$i]['params']) ? $resources[$i]['params'] . '/' : ''; $data[$area][$path] = ['resource_id' => $resources[$i]['resource_id'], 'privilege_id' => $resources[$i]['privilege_id'], 'key' => $resources[$i]['privilege_name']]; } return $this->cache->save(static::CACHE_ID_RESOURCES, $data); }
/** * Inserts a new resource into the database * * @param string $serviceId * @param array $specialResources */ protected function insertAclResources($serviceId, array $specialResources) { list($module, , $area, $controller, $action) = explode('.', $serviceId); // Only add the actual module actions (methods which begin with "action") if ($area !== AreaEnum::AREA_INSTALL && method_exists($this->container->get($serviceId), 'execute') === true) { $action = $this->convertCamelCaseToUnderscore($action); // Handle resources with differing access levels if (isset($specialResources[$area][$controller][$action])) { $privilegeId = $specialResources[$area][$controller][$action]; } else { $privilegeId = $this->getDefaultAclPrivilegeId($area, $action); } $insertValues = ['id' => '', 'module_id' => $this->schemaHelper->getModuleId($module), 'area' => !empty($area) ? strtolower($area) : AreaEnum::AREA_FRONTEND, 'controller' => strtolower($controller), 'page' => $action, 'params' => '', 'privilege_id' => (int) $privilegeId]; $this->resourceRepository->insert($insertValues); } }