/** * __invoke * * @param Request $request * @param Response $response * @param callable|null $out * * @return mixed */ public function __invoke(Request $request, Response $response, callable $out = null) { $isAllowed = $this->rcmUserService->isAllowed($this->getOption($request, 'resourceId', null), $this->getOption($request, 'privilege', null)); if ($isAllowed) { return $out($request, $response); } return $this->getResponseWithAclFailStatus($request, $response); }
/** * Should link be shown in nav bar? * * @param $page * * @return bool */ protected function shouldShowInNavigation(&$page) { if (isset($page['rcmOnly']) && $page['rcmOnly'] && empty($this->page)) { return false; } if (isset($page['acl']) && is_array($page['acl']) && !empty($page['acl']['resource'])) { $providerId = null; if (!empty($page['acl']['providerId'])) { $providerId = $page['acl']['providerId']; } $privilege = null; if (!empty($page['acl']['privilege'])) { $privilege = $page['acl']['privilege']; } $resource = $page['acl']['resource']; $resource = str_replace([':siteId', ':pageName'], [$this->currentSite->getSiteId(), $this->page->getName()], $resource); if (!empty($this->page)) { $resource = str_replace([':siteId', ':pageName'], [$this->currentSite->getSiteId(), $this->page->getName()], $resource); } else { $resource = str_replace([':siteId'], [$this->currentSite->getSiteId()], $resource); } if (!$this->rcmUserService->isAllowed($resource, $privilege, $providerId)) { return false; } } return true; }
/** * Check to make sure user can see revisions * * @return bool */ public function shouldShowRevisions($siteId, $pageType, $pageName) { $allowedRevisions = $this->rcmUserService->isAllowed($this->buildPageResourceId($siteId, $pageType, $pageName), 'edit', 'Rcm\\Acl\\ResourceProvider'); if ($allowedRevisions) { return true; } $allowedRevisions = $this->rcmUserService->isAllowed($this->buildPageResourceId($siteId, $pageType, $pageName), 'approve', 'Rcm\\Acl\\ResourceProvider'); if ($allowedRevisions) { return true; } $allowedRevisions = $this->rcmUserService->isAllowed($this->buildPageResourceId($siteId, $pageType, $pageName), 'revisions', 'Rcm\\Acl\\ResourceProvider'); if ($allowedRevisions) { return true; } $allowedRevisions = $this->rcmUserService->isAllowed($this->buildPagesResourceId($siteId), 'create', 'Rcm\\Acl\\ResourceProvider'); if ($allowedRevisions) { return true; } return false; }
/** * has Access * * @return boolean */ public function hasAccess() { // no restrictions return $this->rcmUserService->isAllowed($this->resourceId, $this->privilege, $this->providerId); }
/** * __invoke * * @param string $resourceId resourceId * @param string $privilege privilege * @param string $providerId providerId * * @return bool */ public function __invoke($resourceId, $privilege = null, $providerId = 'Rcm\\Acl\\ResourceProvider') { return $this->rcmUserService->isAllowed($resourceId, $privilege, $providerId); }