* @package WB * @subpackage vfs */ WBClass::load('WBVFS_AccessControlRule'); /** * Virtual File System: Access Control Rule: Composite Any * * This is a composite for more rules. * Works as a collection of other access control rules. * Test rule by rule, it is sufficient if just one rule grants access. * * @version 0.1.0 * @package WB * @subpackage vfs */ class WBVFS_AccessControlRule_CompositeAny extends WBVFS_AccessControlRule { /** * @var array */ private $acr = null; /** * 2nc Constructor * * Called after configuration was set */ protected function init() { if (!is_array($this->config['accesscontrol'])) { return; } foreach ($this->config['accesscontrol'] as $r) { if (!is_array($r)) { $r = array( 'name' => $r, 'params' => array() ); } if (!isset($r['params'])) { $r['params'] = array(); } /** @var WBVFS_AccessControlRule */ $acr = WBClass::create('WBVFS_AccessControlRule_' . $r['name']); $acr->setVFSFile($this->file, $this->mime); $acr->setLogger($this->log); $acr->setConfig($r['params']); $this->acr[] = $acr; } } /** * Check Permissions 4 Request * * @param WBRequest * @return bool */ public function isRequestGranted($req) { $log = $this->getLogMsg($this::GRANT_NA); $log['rules'] = count($this->acr); $this->log->notice($log); foreach ($this->acr as $acr) { /** @var WBVFS_AccessControlRule */ $acr->setRequestMimeMinor($this->mimeMinor); if ($acr->isRequestGranted($req)) { return true; } } $this->log->debug($this->getLogMsg($this::GRANT_DENY, 'No rule suited')); return false; } }