[!!!][FEATURE] Introduce Backend Routing 95/38095/15
authorBenjamin Mack <benni@typo3.org>
Tue, 3 Mar 2015 14:02:28 +0000 (15:02 +0100)
committerBenni Mack <benni@typo3.org>
Fri, 7 Aug 2015 09:26:18 +0000 (11:26 +0200)
commit23115d3ab152ea51ead7248a41c18d4024674f7c
treed3ce0ab9ba4b3eed43d96a77eb0ceb0a28c20204
parentb1fd17b754b0eca044426b49b0b60d75ea19afc7
[!!!][FEATURE] Introduce Backend Routing

A new Routing API is introduced in order to streamline
the entrypoints to the TYPO3 Backend.

Instead of using the term "module" for anything linkable
in the backend, the term "routes" fits more. A "module"
or an ajax call is a derivative of a route, which will
build on this foundation.

Routes can be registered via
Configuration/Backend/Routes.php in any extension
and are loaded solely on Backend requests.

There are three new classes:
- Route (a single route with a path and some options)
- Router (API to match paths)
- UriBuilder (Generates a Backend URI)

This patch changes the entrypoint for
login/logout to typo3/index.php?route=...&token=....

The main RequestHandler of all Backend modules
detects where a route parameter is given and
then resolves to a controller which inherits the ControllerInterface
introduced with PSR-7, and checks for a valid token.

See http://wiki.typo3.org/Blueprints/BackendRouting
for implementation details.

Resolves: #65493
Releases: master
Change-Id: I39257df45b177793c5e8f57970b4088183b78c73
Reviewed-on: http://review.typo3.org/38095
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Susanne Moog <typo3@susannemoog.de>
Tested-by: Susanne Moog <typo3@susannemoog.de>
Reviewed-by: Daniel Maier <dani-maier@gmx.de>
Tested-by: Daniel Maier <dani-maier@gmx.de>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
22 files changed:
typo3/logout.php
typo3/sysext/backend/Classes/Controller/BackendController.php
typo3/sysext/backend/Classes/Controller/LogoutController.php
typo3/sysext/backend/Classes/Http/AjaxRequestHandler.php
typo3/sysext/backend/Classes/Http/BackendModuleRequestHandler.php
typo3/sysext/backend/Classes/Http/RequestHandler.php
typo3/sysext/backend/Classes/Routing/Exception/ResourceNotFoundException.php [new file with mode: 0644]
typo3/sysext/backend/Classes/Routing/Exception/RouteNotFoundException.php [new file with mode: 0644]
typo3/sysext/backend/Classes/Routing/Route.php [new file with mode: 0644]
typo3/sysext/backend/Classes/Routing/Router.php [new file with mode: 0644]
typo3/sysext/backend/Classes/Routing/UriBuilder.php [new file with mode: 0644]
typo3/sysext/backend/Classes/Utility/BackendUtility.php
typo3/sysext/backend/Configuration/Backend/Routes.php [new file with mode: 0644]
typo3/sysext/backend/Modules/Logout/conf.php [deleted file]
typo3/sysext/backend/Modules/Logout/index.php [deleted file]
typo3/sysext/backend/Modules/Main/conf.php [deleted file]
typo3/sysext/backend/Modules/Main/index.php [deleted file]
typo3/sysext/backend/ext_tables.php
typo3/sysext/core/Classes/Core/Bootstrap.php
typo3/sysext/core/Documentation/Changelog/master/Feature-65493-BackendRouting.rst [new file with mode: 0644]
typo3/sysext/extbase/Classes/Mvc/Web/Routing/UriBuilder.php
typo3/sysext/extbase/Tests/Unit/Mvc/Web/Routing/UriBuilderTest.php