Example #1
0
 /**
  * @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')];
 }
Example #2
0
 /**
  * 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);
 }
Example #3
0
 /**
  * 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);
     }
 }