diff options
| author | Greg Roach <fisharebest@webtrees.net> | 2019-04-02 12:49:16 +0100 |
|---|---|---|
| committer | Greg Roach <fisharebest@webtrees.net> | 2019-04-10 10:46:01 +0100 |
| commit | 6ccdf4f0fd1b65a5d54259c969912382ce49629d (patch) | |
| tree | 05b5413ec6c06cec5ba59c24fd73dd2034ff1b74 /modules_v4 | |
| parent | e2e7f6bfc3bed346c21ad436fd1055ed03e163c3 (diff) | |
| download | webtrees-6ccdf4f0fd1b65a5d54259c969912382ce49629d.tar.gz webtrees-6ccdf4f0fd1b65a5d54259c969912382ce49629d.tar.bz2 webtrees-6ccdf4f0fd1b65a5d54259c969912382ce49629d.zip | |
Convert requests, middleware and reponses to use PSR-7, PSR-15 and PSR-17
Diffstat (limited to 'modules_v4')
| -rw-r--r-- | modules_v4/example-middleware.disable/module.php | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/modules_v4/example-middleware.disable/module.php b/modules_v4/example-middleware.disable/module.php index 418c82aab5..3ba98afdf7 100644 --- a/modules_v4/example-middleware.disable/module.php +++ b/modules_v4/example-middleware.disable/module.php @@ -2,18 +2,21 @@ namespace MyCustomNamespace; -use Closure; -use Fisharebest\Webtrees\Http\Middleware\MiddlewareInterface; use Fisharebest\Webtrees\Module\AbstractModule; use Fisharebest\Webtrees\Module\ModuleCustomInterface; use Fisharebest\Webtrees\Module\ModuleCustomTrait; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; +use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\MiddlewareInterface; +use Psr\Http\Server\RequestHandlerInterface; +use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; +use function in_array; /** * An example module to demonstrate middleware. */ -return new class extends AbstractModule implements ModuleCustomInterface, MiddlewareInterface { +return new class extends AbstractModule implements ModuleCustomInterface, MiddlewareInterface +{ use ModuleCustomTrait; /** @@ -33,7 +36,7 @@ return new class extends AbstractModule implements ModuleCustomInterface, Middle */ public function description(): string { - return 'This adds a custom HTTP headers to all responses'; + return 'This is an example of middleware'; } /** @@ -41,21 +44,29 @@ return new class extends AbstractModule implements ModuleCustomInterface, Middle * * @see https://symfony.com/doc/current/components/http_foundation.html * - * @param Request $request - * @param Closure $next + * @param ServerRequestInterface $request + * @param RequestHandlerInterface $handler * - * @return Response + * @return ResponseInterface */ - public function handle(Request $request, Closure $next): Response + public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { // Code here is executed before we process the request/response. // We can prevent the request being executed by throwing an exception. - // Generate the response from the request. - $response = $next($request); + $blacklist = []; + $ip_address = $request->getServerParams()['REMOTE_ADDR'] ?? '127.0.0.1'; + + if (in_array($ip_address, $blacklist, true)) { + throw new AccessDeniedHttpException(); + } + + // Generate the response from the next middleware handler. + $response = $handler->handle($request); // Code here is executed after we process the request/response. - $response->headers->set('X-Powered-By', 'Fish'); + // We can modify the response. + $response = $response->withHeader('X-Powered-By', 'Fish'); return $response; } |
