16
16
use Psr \Http \Message \ServerRequestInterface ;
17
17
use Psr \Http \Server \MiddlewareInterface ;
18
18
use Psr \Http \Server \RequestHandlerInterface ;
19
+ use TYPO3 \CMS \Core \EventDispatcher \EventDispatcher ;
19
20
use TYPO3 \CMS \Core \Http \RedirectResponse ;
20
21
use TYPO3 \CMS \Core \Routing \RouteNotFoundException ;
21
22
use TYPO3 \CMS \Core \Routing \SiteRouteResult ;
30
31
*/
31
32
class LowerCaseUri implements MiddlewareInterface
32
33
{
34
+ protected EventDispatcher $ eventDispatcher ;
35
+
36
+ public function __construct (EventDispatcher $ eventDispatcher )
37
+ {
38
+ $ this ->eventDispatcher = $ eventDispatcher ;
39
+ }
40
+
33
41
public function process (ServerRequestInterface $ request , RequestHandlerInterface $ handler ): ResponseInterface
34
42
{
43
+ $ beforeMiddlewareIsAppliedEvent = new BeforeMiddlewareIsAppliedEvent ($ request );
44
+ $ this ->eventDispatcher ->dispatch ($ beforeMiddlewareIsAppliedEvent );
45
+ if ($ beforeMiddlewareIsAppliedEvent ->shouldBeApplied () === false ) {
46
+ return $ handler ->handle ($ request );
47
+ }
35
48
/** @var Site $site */
36
49
$ site = $ request ->getAttribute ('site ' );
37
50
@@ -60,8 +73,8 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface
60
73
$ redirectStatusCode = 307 ;
61
74
if ($ site instanceof Site) {
62
75
$ siteLanguage = $ request ->getAttribute ('language ' )->toArray ();
63
- $ doRedirect = (bool ) ($ site ->getConfiguration ()['settings ' ]['redirectOnUpperCase ' ] ?? $ siteLanguage ['redirectOnUpperCase ' ] ?? false );
64
- $ redirectStatusCode = (int ) ($ site ->getConfiguration ()['settings ' ]['redirectStatusCode ' ] ?? $ siteLanguage ['redirectStatusCode ' ] ?? 307 );
76
+ $ doRedirect = (bool )($ site ->getConfiguration ()['settings ' ]['redirectOnUpperCase ' ] ?? $ siteLanguage ['redirectOnUpperCase ' ] ?? false );
77
+ $ redirectStatusCode = (int )($ site ->getConfiguration ()['settings ' ]['redirectStatusCode ' ] ?? $ siteLanguage ['redirectStatusCode ' ] ?? 307 );
65
78
}
66
79
// Redirects only work on GET and HEAD requests
67
80
if ($ doRedirect && in_array ($ request ->getMethod (), ['GET ' , 'HEAD ' ])) {
@@ -76,7 +89,7 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface
76
89
$ updatedUri ,
77
90
$ routeResult ->getSite (),
78
91
$ routeResult ->getLanguage (),
79
- mb_strtolower ((string ) $ routeResult ->getTail ())
92
+ mb_strtolower ((string )$ routeResult ->getTail ())
80
93
);
81
94
$ request = $ request ->withAttribute ('routing ' , $ routeResult );
82
95
}
0 commit comments