public function checkPageAccess(Node $page) { /** @var Node $oriPage */ $oriPage = $page; if ($page->getAccessFrom() > 0 && $page->getAccessFrom() > time()) { $page = false; } if ($page->getAccessTo() > 0 && $page->getAccessTo() < time()) { $page = false; } if ($page->getAccessFromGroups() != '') { $access = false; $groups = ',' . $page->getAccessFromGroups() . ","; //eg ,2,4,5, $cgroups = null; if ($page['access_need_via'] == 0) { //we need to move this to a extra listener // $cgroups =& $this->getJarves()->getClient()->getUser()->getGroups(); } else { // $htuser = $this->getJarves()->getClient()->login($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']); // // if ($htuser['id'] > 0) { // $cgroups =& $htuser['groups']; // } } if ($cgroups) { foreach ($cgroups as $group) { if (strpos($groups, "," . $group['group_id'] . ",") !== false) { $access = true; } } } if (!$access) { //maybe we have access through the backend auth? if ($this->pageStack->isLoggedIn()) { foreach ($this->pageStack->getUser()->getGroupIdsArray() as $groupId) { if (false !== strpos($groups, "," . $groupId . ",")) { $access = true; break; } } } } if (!$access) { $page = false; } } if (!$page && ($to = $oriPage->getAccessRedirectTo())) { if (intval($to) > 0) { $to = $this->pageStack->getNodeUrl($to); } return new RedirectResponse($to); } // // if (!$page && $oriPage->getAccessNeedVia() == 1) { // $response = new Response('', 404); // // return $response; // } }