private function checkPermission($name) { $moduleName = $this->router->getModuleName(); if (trim($moduleName) == false) { return; } $permission = Permission\Manager::checkPermission($moduleName, $name); $className = $this->router->getNamespaceName(); dump('module ' . $moduleName . ' in namespace ' . $className . ' wanna get ' . $name); if (Service::isService($name) && Engine::getInstance()->isRegisteredModule($moduleName) && !$permission) { //dump ( 'doesn\'t have permission for ' . $name . ' ' . $moduleName . ' ' . ( int ) $permission ); Engine::throwException($name, 300); } return true; }
protected function _registerModuleFromManifest($dir) { $router = $this->di->get(Service::ROUTER); $dirs = $this->loader->getConfigDirs('../'); $manifest = Reader::load($dirs->core->modules . $dir . '/Manifest.xml'); $routes = $manifest->getRoutes(); $moduleName = $manifest->getModuleName(); foreach ($routes as $route) { if (!$router->routeExist($route)) { $router->add($route); } else { dump($moduleName . ' : The route ' . $route->getPattern() . ' already exists'); } } if ($this->isRegisteredModule($moduleName)) { self::throwException($moduleName, 500); } $permissions = $manifest->getPermissions(); $permissionGroup = new Permission\Group(); if ($permissions != null) { foreach ($permissions['groups'] as $groupName) { $service = 'Thunderhawk\\API\\' . $groupName; $serviceGroup = defined($service) ? constant($service) : null; $group = Permission\Manager::getGroup($serviceGroup); if ($group != null) { $permissionGroup->merge($group); } } foreach ($permissions['permissions'] as $permission) { $service = 'Thunderhawk\\API\\' . $permission; $serviceValue = defined($service) ? constant($service) : null; $permissionGroup->inflate(new Permission($serviceValue)); } } foreach ($permissionGroup as $modulePermission) { Permission\Manager::addPermission($moduleName, $modulePermission); } /*dump('template engines for '.$moduleName); dump($manifest->getTemplateEngines()); dump('----------------------------------');*/ $this->registerModules(array($moduleName => array('className' => (string) $manifest->getModuleNamespace() . '\\Module', 'path' => $dirs->core->modules . $dir . '/Module.php', 'version' => array('full' => $manifest->getVersion(), 'release' => $manifest->getVersionInt('release'), 'major' => $manifest->getVersionInt('major'), 'minor' => $manifest->getVersionInt('minor')), 'permissions' => $permissionGroup)), true); return $moduleName; }