/**
  * @param ArhitectRequest $request
  * @param callable        $next
  *
  * @return mixed
  */
 public function handle(ArhitectRequest $request, callable $next)
 {
     switch ($request->getMethod()) {
         case Request::METHOD_POST:
         case Request::METHOD_PUT:
         case Request::METHOD_DELETE:
             $crossSiteForgeryToken = $request->any('csrf');
             if (!$crossSiteForgeryToken || $crossSiteForgeryToken != $this->session->get('csrf', NULL)) {
                 $this->session->getErrorsBag()->add('csrf', $this->translator->translate('The request has expired. Please submit the form again.'));
             }
             break;
     }
     return $next($request);
 }
 /**
  * @param Request  $request
  * @param callable $next
  *
  * @return mixed
  * @throws \Exception
  */
 public function handle(Request $request, callable $next)
 {
     $method = $request->param('__ACTION__', $request->getMethod());
     $server = $request->server();
     $server['REQUEST_METHOD'] = $method;
     $pathInfo = $request->getPathInfo();
     $this->router->match($pathInfo, $server);
     if (!($route = $this->router->getMatchedRoute())) {
         throw new \Exception(sprintf('Could not find a route for the path info "%s"', $pathInfo), Response::HTTP_NOT_FOUND);
     }
     $routeParams = $this->router->getMatchedRoute()->getRouteParams();
     $request->set('__ACTION__', strtolower($method));
     foreach ($routeParams as $paramName => $paramValue) {
         if ($paramName == 'namespace' || $paramName == 'controller' || $paramName == 'action') {
             $paramName = '__' . strtoupper($paramName) . '__';
         }
         $request->set($paramName, $paramValue);
     }
     $middlewares = $this->router->getMiddlewares($route->getName());
     $pipe = $this->middlewarePipe->pipe($middlewares);
     if ($response = $pipe($request)) {
         return $response;
     }
     return $next($request);
 }
 /**
  * @param Request  $request
  * @param callable $next
  *
  * @return mixed
  * @throws \Exception
  */
 public function handle(Request $request, callable $next)
 {
     $resource = $request->param('__NAMESPACE__');
     $controllerName = $request->param('__CONTROLLER__');
     $method = $request->param('__ACTION__');
     if ($controllerName) {
         if (FALSE === strstr($controllerName, '\\')) {
             $controllerName = Word::dashToCamelCase($controllerName);
             $controllerName .= 'Controller';
             $controllerName = rtrim($resource, '\\') . '\\' . $controllerName;
         }
     } else {
         $controllerName = $resource;
     }
     if (FALSE !== strstr($controllerName, '@')) {
         $controllerName = explode('@', $controllerName);
         $method = $controllerName[1];
         $controllerName = $controllerName[0];
     }
     $method = lcfirst(Word::dashToCamelCase($method));
     $request->set('__CONTROLLER__', $controllerName);
     $request->set('__ACTION__', $method);
     if (!class_exists($controllerName)) {
         throw new \Exception(sprintf('Class "%s" does not exist', $controllerName), Response::HTTP_NOT_FOUND);
     }
     if (!method_exists($controllerName, strtoupper($method))) {
         throw new \Exception(sprintf('Method "%s" does not exist in class "%s"', $method, $controllerName), Response::HTTP_NOT_FOUND);
     }
     $controller = $this->serviceManager->load($controllerName);
     $params = $request->query();
     $params = ArrayUtils::merge($params, $request->post(), FALSE, TRUE);
     //        $params = ArrayUtils::merge($params, $request->attributes->all(), false, true);
     try {
         $mvcResponse = $this->serviceManager->call([$controller, $method], $params);
     } catch (ValidationError $error) {
         $method = $request->post('__PREVIOUS__', 'get');
         $mvcResponse = $this->serviceManager->call([$controller, strtolower($method)], $params);
     }
     if ($mvcResponse instanceof Response) {
         return $mvcResponse;
     }
     $mvcResponse = new DispatchResult($mvcResponse, $controllerName, $method);
     $result = $next($request);
     if ($result) {
         return $result;
     }
     return $mvcResponse;
 }
 /**
  * @param       $name
  * @param array $args
  *
  * @return false|string
  * @throws RouteNotFound
  */
 public function routeNameToUrlString($name, array $args = [])
 {
     foreach ($args as $offset => $arg) {
         if (!$arg) {
             unset($args[$offset]);
         }
     }
     try {
         $url = $this->generate($name, $args);
     } catch (RouteNotFound $exception) {
         try {
             $newName = 'default.' . $name;
             $url = $this->generate($newName, $args);
         } catch (RouteNotFound $e) {
             throw new RouteNotFound(sprintf('Route with name "%s" or "%s" not found', $newName, $name));
         }
     }
     if (FALSE !== strstr($url, '{')) {
         throw new RouteNotFound(sprintf('Route with name "%s" needs parameters. Temporary resulted into: %s', $name, $url));
     }
     return $this->request->getBaseUrl() . $url;
 }
Exemple #5
0
 /**
  * @param Configuration $configuration
  * @param Request       $request
  */
 public function __construct(Configuration $configuration, Request $request)
 {
     $this->version = $configuration->get('twig.assets.version', time());
     $this->path = $configuration->get('twig.assets.path', $request->getBasePath());
 }