RequestHandler.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace Opentalent\OtTemplating\Middleware;
  3. use Psr\Http\Message\ResponseInterface;
  4. use Psr\Http\Message\ServerRequestInterface;
  5. use Psr\Http\Server\MiddlewareInterface;
  6. use Psr\Http\Server\RequestHandlerInterface;
  7. use TYPO3\CMS\Core\Http\RedirectResponse;
  8. /**
  9. * Hooks into the frontend request and process the request
  10. *
  11. * @internal
  12. */
  13. class RequestHandler implements MiddlewareInterface
  14. {
  15. /**
  16. *
  17. * @param ServerRequestInterface $request
  18. * @param RequestHandlerInterface $handler
  19. * @return ResponseInterface
  20. */
  21. public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
  22. {
  23. $uri = $request->getUri();
  24. if (preg_match("/^(.*&)*logintype=logout(&.*)*$/", $uri->getQuery())) {
  25. // this is a logout request, and it has already been handled by the
  26. // auth service.
  27. $newQuery = preg_replace("/logintype=logout&?/", '', $uri->getQuery());
  28. return new RedirectResponse(
  29. $uri->withQuery($newQuery),
  30. 303,
  31. ['X-Redirect-By' => 'OtTemplating logout redirection']
  32. );
  33. }
  34. // just pass the plate to the next middleware...
  35. return $handler->handle($request);
  36. }
  37. }