Ejemplo n.º 1
0
 /**
  *
  * @param string $route        	
  * @return boolean|RouteMatch
  */
 private function checkRoute($route)
 {
     $request = new Request();
     $request->setMethod(Request::METHOD_GET);
     $request->setUri($route);
     try {
         $match = $this->router->match($request);
         return isset($match) ? $match : false;
     } catch (\Exception $e) {
         return false;
     }
     return false;
 }
Ejemplo n.º 2
0
 /**
  * @return string|null
  */
 public function resolve()
 {
     if (!$this->request instanceof HttpRequest) {
         return;
     }
     $routeMatch = $this->router->match($this->request);
     if (!$routeMatch) {
         return;
     }
     $matchedRouteName = $routeMatch->getMatchedRouteName();
     foreach ($this->config['wizards'] as $name => $options) {
         if (empty($options['route'])) {
             continue;
         }
         if (is_string($options['route'])) {
             $options['route'] = [$options['route']];
         }
         if (!in_array($matchedRouteName, $options['route'])) {
             continue;
         }
         return $name;
     }
 }
 /**
  * @param MvcEvent       $event
  * @param Request        $request
  * @param Response       $response
  * @param FlashMessenger $flashMessenger
  * @param RouteInterface $router
  * @param Translator     $translator
  *
  * @return bool
  */
 public function checkAcl(MvcEvent $event, Request $request, Response $response, FlashMessenger $flashMessenger, RouteInterface $router, Translator $translator)
 {
     $role = $this->guestRoleName;
     if ($this->auth->hasIdentity()) {
         $role = $this->auth->getIdentity()->getRole();
         if (!in_array($role, $this->allowedRoles)) {
             $role = $this->guestRoleName;
         }
     }
     $matchedRoute = $this->router->match($request);
     if (is_null($matchedRoute)) {
         return;
     }
     $params = $matchedRoute->getParams();
     $module = array_key_exists('__NAMESPACE__', $params) ? $params['__NAMESPACE__'] : null;
     $controller = array_key_exists('controller', $params) ? $params['controller'] : null;
     $action = array_key_exists('action', $params) ? $params['action'] : null;
     if ($module && $controller) {
         $module .= '.';
     }
     if ($action) {
         $controller .= '.';
     }
     $resource = str_replace('\\Controller', '', $module) . $controller . $action;
     $resource = strtolower(str_replace('\\', '.', $resource));
     if ($controller) {
         unset($params['controller']);
     }
     if ($action) {
         unset($params['action']);
     }
     if ($module) {
         unset($params['__NAMESPACE__']);
     }
     if (!$this->hasResource($resource)) {
         return true;
         if ($role == $this->guestRoleName) {
             $url = $router->assemble([], ['name' => 'aclGuestResourceNotFound']);
         } else {
             $url = $router->assemble([], ['name' => 'aclUserResourceNotFound']);
         }
         if (DEBUG) {
             $flashMessenger->addErrorMessage(sprintf($translator->translate('The requested resource %s does not exist'), $resource));
         } else {
             $flashMessenger->addErrorMessage($translator->translate('The requested resource does not exist'));
         }
         $response->setStatusCode(302);
         if (DEBUG) {
             echo '<div style="margin:150px auto; width: 50%; text-align:center; font-size:18px;"><h3>DEBUG IS ENABLED' . '</h3><br />Normally would auto-redirect to:<br /><br /><a style="font-size:24px;" href="' . $url . '">' . $url . '</a>';
             echo '</div>';
             die;
         }
         header('location: ' . $url);
         $event->stopPropagation();
         $event->setError('x');
         return;
     }
     if (!$this->isAllowed($role, $resource)) {
         if (DEBUG) {
             $flashMessenger->addErrorMessage(sprintf($translator->translate('You (%s) are not allowed to access this resource: %s'), $role, $resource));
         } else {
             $flashMessenger->addErrorMessage($translator->translate('You  are not allowed to access this resource'));
         }
         if ($role == $this->guestRoleName) {
             $url = $router->assemble([], ['name' => 'aclGuestNotAllowed']);
         } else {
             $url = $router->assemble([], ['name' => 'aclUserNotAllowed']);
         }
         $response->setStatusCode(302);
         if (DEBUG) {
             echo '<div style="margin:150px auto; width: 50%; text-align:center; font-size:18px;"><h3>DEBUG IS ENABLED' . '</h3><br />Normally would auto-redirect to:<br /><br /><a style="font-size:24px;" href="' . $url . '">' . $url . '</a>';
             echo '</div>';
             die;
         }
         header('location: ' . $url);
         $event->stopPropagation();
         $event->setError('x');
         return;
     }
     return true;
 }