Finalize referrer form finisher by adding request middlewareπ

This commit is contained in:
Björn Fromme
2021-09-07 14:37:27 +02:00
parent 4ab82c714d
commit d3647320fb
4 changed files with 63 additions and 30 deletions
@@ -0,0 +1,39 @@
<?php
namespace EP\EpTheme\Middleware;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use TYPO3\CMS\Core\Exception\SiteNotFoundException;
use TYPO3\CMS\Core\Site\SiteFinder;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class ReferrerMiddleware implements MiddlewareInterface
{
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$queryParams = $request->getQueryParams();
if (!array_key_exists('ref', $queryParams)) {
return $handler->handle($request);
}
$ref = $queryParams['ref'];
/** @var SiteFinder $siteFinder */
$siteFinder = GeneralUtility::makeInstance(SiteFinder::class);
try {
$site = $siteFinder->getSiteByPageId($ref);
$url = $site->getRouter()->generateUri($ref);
$GLOBALS['TSFE']->fe_user->setKey('ses', 'referrer', $url);
$GLOBALS['TSFE']->fe_user->storeSessionData();
}
catch (SiteNotFoundException $exception) {
}
return $handler->handle($request);
}
}