/** * Assert that the group of the currently logged in customer only has or not some accesses to some resources. * @param array $expectedRessourceAccesses A map of [expected resource => [expected accesses...], ...]. * @param boolean $expectedGrant Whether the accesses are expected to be granted or not. * * @todo Check every possible permutation of ressource(s) and access(es) in the expected set ? */ protected function assertGroupAccesses(array $expectedRessourceAccesses, $expectedGrant) { foreach ($expectedRessourceAccesses as $ressourceCode => $accessesCodes) { // assert all accesses at once $this->assertEquals($expectedGrant, $this->aclTool->checkAcl($ressourceCode, $accessesCodes)); // as well as individually foreach ($accessesCodes as $accessCode) { $this->assertEquals($expectedGrant, $this->aclTool->checkAcl($ressourceCode, $accessCode)); } } }
/** * Handle acl smarty block structure * * @param array $params Parameters * @param string $content Block content * @param \Smarty_Internal_Template $template Smarty template * @param boolean $repeat Block repeat * * @throws \TheliaSmarty\Template\Exception\SmartyPluginException * * @return null|string */ public function checkAclBlock(array $params, $content, $template, &$repeat) { if ($content === null) { list($codes, $accesses, $accessOr, $entityId, $name) = $this->checkParameters($params); if ($name !== null) { if (array_key_exists($name, $this->rel)) { throw new SmartyPluginException('The named blocks "' . $name . '" was already declared.'); } $this->rel[$name] = true; } if (!$this->customerGroupAclTool->checkAcl(explode(',', $codes), explode(',', $accesses), $accessOr, $entityId)) { if ($name !== null) { $this->rel[$name] = false; } $repeat = false; } } return $content; }