Example #1
0
 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;
     //        }
 }