aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan-Hendrik Willms <tleilax+studip@gmail.com>2025-07-11 10:53:24 +0200
committerJan-Hendrik Willms <tleilax+studip@gmail.com>2025-07-11 10:53:24 +0200
commitc23259154d3defab98216d704020d486f1f76613 (patch)
treeb56d66b4bedd2a6b41033209c1ad27f0b600f955
parentf26acf3c8be2b8e4f9a6dcc3089c16273d416bff (diff)
jsonapi: register routes as middleware after potential authentication, fixes #5681
Closes #5681 Merge request studip/studip!4319
-rw-r--r--lib/classes/JsonApi/routes.php8
-rw-r--r--lib/middleware/JsonApiRouteRegistrarMiddleware.php25
-rw-r--r--public/jsonapi.php13
3 files changed, 31 insertions, 15 deletions
diff --git a/lib/classes/JsonApi/routes.php b/lib/classes/JsonApi/routes.php
deleted file mode 100644
index 5132f55..0000000
--- a/lib/classes/JsonApi/routes.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-namespace JsonApi;
-
-use Slim\App;
-
-return function (App $app) {
- $app->group('/v1', RouteMap::class);
-};
diff --git a/lib/middleware/JsonApiRouteRegistrarMiddleware.php b/lib/middleware/JsonApiRouteRegistrarMiddleware.php
new file mode 100644
index 0000000..92f178e
--- /dev/null
+++ b/lib/middleware/JsonApiRouteRegistrarMiddleware.php
@@ -0,0 +1,25 @@
+<?php
+namespace Studip\Middleware;
+
+use JsonApi\RouteMap;
+use Psr\Http\Message\{
+ ResponseInterface as Response,
+ ServerRequestInterface as Request
+};
+use Psr\Http\Server\MiddlewareInterface;
+use Psr\Http\Server\RequestHandlerInterface;
+
+final class JsonApiRouteRegistrarMiddleware implements MiddlewareInterface
+{
+ public function __construct(
+ private readonly \Slim\App $app
+ ) {
+ }
+
+ public function process(Request $request, RequestHandlerInterface $handler): Response
+ {
+ $this->app->group('/v1', RouteMap::class);
+
+ return $handler->handle($request);
+ }
+}
diff --git a/public/jsonapi.php b/public/jsonapi.php
index 8d69b51..392b8b0 100644
--- a/public/jsonapi.php
+++ b/public/jsonapi.php
@@ -2,7 +2,7 @@
use Slim\Factory\AppFactory;
-require '../lib/bootstrap.php';
+require __DIR__ . '/../lib/bootstrap.php';
\StudipAutoloader::addAutoloadPath($GLOBALS['STUDIP_BASE_PATH'] . DIRECTORY_SEPARATOR . 'vendor/oauth-php/library/');
@@ -22,14 +22,13 @@ $app->setBasePath($GLOBALS['CANONICAL_RELATIVE_PATH_STUDIP'] . 'jsonapi.php');
$middleware = require 'lib/classes/JsonApi/middleware.php';
$middleware($app);
+// Register routes via middleware
+$app->add(Studip\Middleware\JsonApiRouteRegistrarMiddleware::class);
+
//register stud.ip session/auth middleware
-$app->add(app(Studip\Middleware\AuthenticationMiddleware::class));
+$app->add(Studip\Middleware\AuthenticationMiddleware::class);
auth()->setNobody(true);
-$app->add(app(Studip\Middleware\SessionMiddleware::class));
-
-// Register routes
-$routes = require 'lib/classes/JsonApi/routes.php';
-$routes($app);
+$app->add(Studip\Middleware\SessionMiddleware::class);
// Add Error Middleware
$displayErrors = false;