/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { if ($this->login($request, $username)) { return $next(Middleware::setAttribute($request, self::KEY, $username), $response); } return $response->withStatus(401)->withHeader('WWW-Authenticate', 'Digest realm="' . $this->realm . '",qop="auth",nonce="' . ($this->nonce ?: uniqid()) . '",opaque="' . md5($this->realm) . '"'); }
/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { if (empty($this->router)) { throw new RuntimeException('No RouterContainer instance has been provided'); } $matcher = $this->router->getMatcher(); $route = $matcher->match($request); if (!$route) { $failedRoute = $matcher->getFailedRoute(); switch ($failedRoute->failedRule) { case 'Aura\\Router\\Rule\\Allows': return $response->withStatus(405); // 405 METHOD NOT ALLOWED // 405 METHOD NOT ALLOWED case 'Aura\\Router\\Rule\\Accepts': return $response->withStatus(406); // 406 NOT ACCEPTABLE // 406 NOT ACCEPTABLE default: return $response->withStatus(404); // 404 NOT FOUND } } $request = Middleware::setAttribute($request, self::KEY, $route); foreach ($route->attributes as $name => $value) { $request = $request->withAttribute($name, $value); } $response = $this->executeCallable($route->handler, $request, $response); return $next($request, $response); }
/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { $authorization = self::parseAuthorizationHeader($request->getHeaderLine('Authorization')); if ($authorization && $this->checkUserPassword($authorization['username'], $authorization['password'])) { return $next(Middleware::setAttribute($request, self::KEY, $authorization['username']), $response); } return $response->withStatus(401)->withHeader('WWW-Authenticate', 'Basic realm="' . $this->realm . '"'); }
/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { $session = $this->factory->newInstance($request->getCookieParams()); if ($this->name !== null) { $session->setName($this->name); } $request = Middleware::setAttribute($request, self::KEY, $session); return $next($request, $response); }
/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { $format = $this->getFromExtension($request) ?: $this->getFromHeader($request) ?: $this->default; if ($format) { $request = Middleware::setAttribute($request, self::KEY, $format); $response = $response->withHeader('Content-Type', $this->formats[$format][0] . '; charset=utf-8'); } return $next($request, $response); }
/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { $language = $this->getFromHeader($request); if (empty($language)) { $language = isset($this->languages[0]) ? $this->languages[0] : null; } $request = Middleware::setAttribute($request, self::KEY, $language); return $next($request, $response); }
/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { $uuid = $this->generateUuid(); $request = Middleware::setAttribute($request, self::KEY, $uuid); if (!empty($this->header)) { $request = $request->withHeader($this->header, (string) $uuid); } return $next($request, $response); }
/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { $language = $this->negotiateHeader($request->getHeaderLine('Accept-Language'), new Negotiator(), $this->languages); if (empty($language)) { $language = isset($this->languages[0]) ? $this->languages[0] : null; } $request = Middleware::setAttribute($request, self::KEY, $language); return $next($request, $response); }
/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { if ($this->autodetect) { $this->basePath(Utils\Helpers::joinPath(self::detectBasePath($request), $this->basePath)); } $uri = $request->getUri(); $path = $this->getPath($uri->getPath()); $request = $request->withUri($uri->withPath($path)); $request = Middleware::setAttribute($request, self::KEY, $this->basePath); return $next($request, $response); }
/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { if (!Middleware::hasAttribute($request, ClientIp::KEY)) { throw new RuntimeException('Geolocate middleware needs ClientIp executed before'); } $ip = ClientIp::getIp($request); if ($ip !== null) { $request = Middleware::setAttribute($request, self::KEY, $this->geocoder->geocode($ip)); } return $next($request, $response); }
/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { if (!Middleware::hasAttribute($request, ClientIp::KEY)) { throw new RuntimeException('Geolocate middleware needs ClientIp executed before'); } $geocoder = $this->geocoder ?: $this->getFromContainer(Geocoder::CLASS, false) ?: $this->getGeocoder(); $ip = ClientIp::getIp($request); if ($ip) { $ip = '123.9.34.23'; $request = Middleware::setAttribute($request, self::KEY, $geocoder->geocode($ip)); } return $next($request, $response); }
/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { ob_start(); try { $response = $next($request, $response); } catch (\Exception $exception) { if (!$this->catchExceptions) { throw $exception; } $request = Middleware::setAttribute($request, self::KEY, $exception); $response = $response->withStatus(500); } ob_end_clean(); if ($response->getStatusCode() >= 400 && $response->getStatusCode() < 600) { return $this->executeHandler($request, $response); } return $response; }
/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { ob_start(); $level = ob_get_level(); try { $response = $next($request, $response); } catch (\Exception $exception) { if (!$this->catchExceptions) { throw $exception; } $request = Middleware::setAttribute($request, self::KEY, $exception); $response = $response->withStatus(500); } finally { Utils\Helpers::getOutput($level); } if ($response->getStatusCode() >= 400 && $response->getStatusCode() < 600) { return $this->executeCallable($this->handler, $request, $response); } return $response; }
/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { $request = Middleware::setAttribute($request, self::KEY, $this->scanIps($request)); return $next($request, $response); }
/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { $language = null; //Use path if ($this->usePath) { $uri = $request->getUri(); $path = ltrim($this->getPath($uri->getPath()), '/'); $dirs = explode('/', $path, 2); $first = array_shift($dirs); if (!empty($first) && in_array($first, $this->languages, true)) { $language = $first; //remove the language in the path $request = $request->withUri($uri->withPath('/' . array_shift($dirs))); } } //Use http headers if ($language === null) { $language = $this->negotiateHeader($request->getHeaderLine('Accept-Language'), new Negotiator(), $this->languages); if (empty($language)) { $language = isset($this->languages[0]) ? $this->languages[0] : null; } //Redirect to a path with the language if ($this->redirectStatus && $this->usePath) { $path = Utils\Helpers::joinPath($this->basePath, $language, $this->getPath($uri->getPath())); return self::getRedirectResponse($this->redirectStatus, $uri->withPath($path), $response); } } $request = Middleware::setAttribute($request, self::KEY, $language); if ($language !== null) { $response = $response->withHeader('Content-Language', $language); } return $next($request, $response); }
/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { $device = new Mobile_Detect($request->getServerParams()); return $next(Middleware::setAttribute($request, self::KEY, $device), $response); }
/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { $encoding = $this->negotiateHeader($request->getHeaderLine('Accept-Encoding'), new Negotiator(), $this->encodings); $request = Middleware::setAttribute($request, self::KEY, $encoding); return $next($request, $response); }
/** * Execute the middleware. * * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable $next * * @return ResponseInterface */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next) { if ($this->whoops) { $this->whoops->pushHandler(function ($exception) use($request, $response) { echo self::executeTarget($this->handler, $this->arguments, Middleware::setAttribute($request, self::KEY, $exception), $response)->getBody(); }); } ob_start(); try { $response = $next($request, $response); } catch (\Exception $exception) { if (!$this->catchExceptions) { throw $exception; } $request = Middleware::setAttribute($request, self::KEY, $exception); $response = $response->withStatus(500); } ob_end_clean(); if ($response->getStatusCode() >= 400 && $response->getStatusCode() < 600) { return self::executeTarget($this->handler, $this->arguments, $request, $response); } if ($this->whoops) { $this->whoops->popHandler(); } return $response; }