Select Git revision
Semester.php
Forked from
Stud.IP / Stud.IP
Source project has a limited visibility.
-
Jan-Hendrik Willms authored
Closes #4757 Merge request studip/studip!3547
Jan-Hendrik Willms authoredCloses #4757 Merge request studip/studip!3547
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
RouteMap.php 28.56 KiB
<?php
namespace JsonApi;
use JsonApi\Contracts\JsonApiPlugin;
use JsonApi\Middlewares\Authentication;
use JsonApi\Middlewares\DangerousRouteHandler;
use JsonApi\Middlewares\JsonApi as JsonApiMiddleware;
use JsonApi\Middlewares\StudipMockNavigation;
use Slim\Routing\RouteCollectorProxy;
/**
* Diese Klasse ist die JSON-API-Routemap, in der alle Routen
* registriert werden und die Middleware hinzugefügt wird, die
* JSON-API spezifische Fehlerbehandlung usw. übernimmt.
*
* Routen der Kernklassen sind hier explizit vermerkt.
*
* Routen aus Plugins werden über die PluginEngine abgefragt. Plugins
* können genau dann eigene Routen registrieren, wenn sie das
* Interface \JsonApi\Contracts\JsonApiPlugin implementieren.
*
* Routen können entweder mit Autorisierung oder auch ohne eingetragen
* werden. Autorisierte Kernrouten werden in
* RouteMap::authenticatedRoutes vermerkt. Kernrouten ohne
* notwendige Autorisierung werden in
* RouteMap::unauthenticatedRoutes registriert. Routen aus Plugins
* werden jeweils in den Methoden
* \JsonApi\Contracts\JsonApiPlugin::registerAuthenticatedRoutes und
* \JsonApi\Contracts\JsonApiPlugin::registerUnauthenticatedRoutes
* eingetragen.
*
* Zu authentifizierende Routen werden in \JsonApi\Middlewares\Authentication
* authentifiziert.
*
* Wie Routen registriert werden, kann man im `User Guide` des
* Slim-Frameworks nachlesen
* (http://www.slimframework.com/docs/objects/router.html#how-to-create-routes)
*
* Route-Handler können als Funktionen, in der Slim-Syntax
* "Klassenname:Methodenname" oder auch mit dem Klassennamen einer
* Klasse, die __invoke implementiert, angegeben werden. Die
* __invoke-Variante wird hier sehr empfohlen.
*
* Beispiel:
*
* use Studip\MeineRoute;
*
* $this->app->post('/article/{id}/comments', MeineRoute::class);
*
* @see \JsonApi\Middlewares\JsonApi
* @see \JsonApi\Middlewares\Authentication
* @see \JsonApi\Contracts\JsonApiPlugin
* @see http://www.slimframework.com/docs/objects/router.html#how-to-create-routes
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class RouteMap
{
/** @var \Slim\App */
private $app;
/**
* Der Konstruktor.
*
* @param \Slim\App $app die Slim-Applikation, in der die Routen
* definiert werden sollen
*/
public function __construct(\Slim\App $app)
{