RequestHandler.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. namespace Opentalent\OtConnect\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 in order to
  10. * rewrite the uri and remove the 'logintype=logout' part after it was processed.
  11. *
  12. * @internal
  13. */
  14. class RequestHandler implements MiddlewareInterface
  15. {
  16. /**
  17. *
  18. * @param ServerRequestInterface $request
  19. * @param RequestHandlerInterface $handler
  20. * @return ResponseInterface
  21. */
  22. public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
  23. {
  24. $uri = $request->getUri();
  25. if (preg_match("/^(.*&)*logintype=logout(&.*)*$/", $uri->getQuery())) {
  26. // this is a logout request, and it has already been handled by the
  27. // auth service.
  28. $newQuery = preg_replace("/logintype=logout&?/", '', $uri->getQuery());
  29. return new RedirectResponse(
  30. $uri->withQuery($newQuery),
  31. 303,
  32. ['X-Redirect-By' => 'OtConnect logout redirection']
  33. );
  34. }
  35. // just pass the plate to the next middleware...
  36. return $handler->handle($request);
  37. }
  38. }