public function applyRule(AccessRule $rule) { if ($rule->getRole()->getUri() == INSTANCE_ROLE_ANONYMOUS) { $mask = $rule->getMask(); if (isset($mask['ext']) && !isset($mask['mod'])) { $this->whiteListExtension($mask['ext']); } elseif (isset($mask['ext']) && isset($mask['mod']) && !isset($mask['act'])) { $this->whiteListController(FuncHelper::getClassName($mask['ext'], $mask['mod'])); } elseif (isset($mask['ext']) && isset($mask['mod']) && isset($mask['act'])) { $this->whiteListAction(FuncHelper::getClassName($mask['ext'], $mask['mod']), $mask['act']); } elseif (isset($mask['controller'])) { $this->whiteListController($mask['controller']); } elseif (isset($mask['act']) && strpos($mask['act'], '@') !== false) { list($controller, $action) = explode('@', $mask['act'], 2); $this->whiteListAction($controller, $action); } else { \common_Logger::w('Unregoginised mask keys: ' . implode(',', array_keys($mask))); } } }
/** * Test {@link FuncHelper::getClassName}} * @dataProvider getClassNameProvider * @param string $extension * @param string $shortName * @param string $expectedClassName */ public function testGetClassName($extension, $shortName, $expectedClassName) { $className = FuncHelper::getClassName($extension, $shortName); $this->assertTrue(is_string($className)); $this->assertEquals($expectedClassName, $className); }
public function revokeRule(AccessRule $rule) { if ($rule->getRole()->getUri() === INSTANCE_ROLE_ANONYMOUS) { $ext = common_ext_ExtensionsManager::singleton()->getExtensionById('tao'); $this->controllers = $ext->hasConfig(self::WHITELIST_KEY) ? $ext->getConfig(self::WHITELIST_KEY) : array(); $mask = $rule->getMask(); if (isset($mask['ext']) && !isset($mask['mod'])) { foreach (ControllerHelper::getControllers($mask['ext']) as $controllerClassName) { unset($this->controllers[$controllerClassName]); } } elseif (isset($mask['ext']) && isset($mask['mod']) && !isset($mask['act'])) { unset($this->controllers[FuncHelper::getClassName($mask['ext'], $mask['mod'])]); } elseif (isset($mask['ext']) && isset($mask['mod']) && isset($mask['act'])) { $controller = FuncHelper::getClassName($mask['ext'], $mask['mod']); if (isset($this->controllers[$controller])) { unset($this->controllers[$controller][$mask['act']]); if (0 === count($this->controllers[$controller])) { unset($this->controllers[$controller]); } } } elseif (isset($mask['controller'])) { unset($this->controllers[$mask['controller']]); } elseif (isset($mask['act']) && strpos($mask['act'], '@') !== false) { list($controller, $action) = explode('@', $mask['act'], 2); if (isset($this->controllers[$controller])) { unset($this->controllers[$controller][$action]); if (0 === count($this->controllers[$controller])) { unset($this->controllers[$controller]); } } } else { \common_Logger::w('Unrecognised mask keys: ' . implode(',', array_keys($mask))); } $ext->setConfig(self::WHITELIST_KEY, $this->controllers); } }
public static function getControllerFromUri($uri) { list($type, $extension, $controller) = explode('_', substr($uri, strpos($uri, '#') + 1)); return FuncHelper::getClassName($extension, $controller); }