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