summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/Http/Middleware/RequestHandler.php (renamed from app/Http/Middleware/WrapHandler.php)35
-rw-r--r--app/Http/Middleware/Router.php5
-rw-r--r--phpstan-baseline.neon5
3 files changed, 16 insertions, 29 deletions
diff --git a/app/Http/Middleware/WrapHandler.php b/app/Http/Middleware/RequestHandler.php
index 615d49af80..959121d2ee 100644
--- a/app/Http/Middleware/WrapHandler.php
+++ b/app/Http/Middleware/RequestHandler.php
@@ -19,31 +19,21 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Http\Middleware;
+use Aura\Router\Route;
+use Illuminate\Container\Container;
+use Psr\Container\ContainerInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
-use function app;
+use function is_string;
/**
* Middleware to run a request-handler.
*/
-class WrapHandler implements MiddlewareInterface
+class RequestHandler implements MiddlewareInterface
{
- /** @var string|RequestHandlerInterface */
- private $handler;
-
- /**
- * WrapController constructor.
- *
- * @param string|RequestHandlerInterface $handler
- */
- public function __construct($handler)
- {
- $this->handler = $handler;
- }
-
/**
* @param ServerRequestInterface $request
* @param RequestHandlerInterface $handler
@@ -52,12 +42,17 @@ class WrapHandler implements MiddlewareInterface
*/
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
- // A request handler object?
- if ($this->handler instanceof RequestHandlerInterface) {
- return $this->handler->handle($request);
+ /** @var Route $route */
+ $route = $request->getAttribute('route');
+
+ $request_handler = $route->handler;
+
+ if (is_string($request_handler)) {
+ $request_handler = Container::getInstance()->get($request_handler);
}
- // A string containing a request handler class name
- return app($this->handler)->handle($request);
+ assert($request_handler instanceof RequestHandlerInterface);
+
+ return $request_handler->handle($request);
}
}
diff --git a/app/Http/Middleware/Router.php b/app/Http/Middleware/Router.php
index b7c14548a0..25f988a953 100644
--- a/app/Http/Middleware/Router.php
+++ b/app/Http/Middleware/Router.php
@@ -34,7 +34,6 @@ use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use function app;
-use function array_map;
use function response;
use function str_contains;
@@ -113,17 +112,15 @@ class Router implements MiddlewareInterface
// This middleware cannot run until after the routing, as it needs to know the route.
$post_routing_middleware = [CheckCsrf::class];
- $post_routing_middleware = array_map('app', $post_routing_middleware);
// Firstly, apply the route middleware
$route_middleware = $route->extras['middleware'] ?? [];
- $route_middleware = array_map('app', $route_middleware);
// Secondly, apply any module middleware
$module_middleware = $this->module_service->findByInterface(MiddlewareInterface::class)->all();
// Finally, run the handler using middleware
- $handler_middleware = [new WrapHandler($route->handler)];
+ $handler_middleware = [RequestHandler::class];
$middleware = array_merge(
$post_routing_middleware,
diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon
index 3a002dc778..12e0949f4b 100644
--- a/phpstan-baseline.neon
+++ b/phpstan-baseline.neon
@@ -280,11 +280,6 @@ parameters:
path: app/Http/Middleware/UseTransaction.php
-
- message: "#^Parameter \\#1 \\$callback of function call_user_func expects callable\\(\\)\\: mixed, array\\(mixed, string\\) given\\.$#"
- count: 1
- path: app/Http/Middleware/WrapHandler.php
-
- -
message: "#^Access to an undefined property Fisharebest\\\\Webtrees\\\\Fact\\:\\:\\$anniv\\.$#"
count: 1
path: app/Http/RequestHandlers/CalendarEvents.php