Skip to content
Snippets Groups Projects
Select Git revision
  • 92cc6177bb19c9bf4716795a10db7d2b1b39a622
  • main default protected
  • studip-rector
  • ci-opt
  • course-members-export-as-word
  • data-vue-app
  • pipeline-improvements
  • webpack-optimizations
  • rector
  • icon-renewal
  • http-client-and-factories
  • jsonapi-atomic-operations
  • vueify-messages
  • tic-2341
  • 135-translatable-study-areas
  • extensible-sorm-action-parameters
  • sorm-configuration-trait
  • jsonapi-mvv-routes
  • docblocks-for-magic-methods
19 results

RouteMap.php

Blame
  • Forked from Stud.IP / Stud.IP
    Source project has a limited visibility.
    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)
        {