/** * @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; }
/** * @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()); }