phpmyadmin/libraries/classes/Middleware/UrlRedirection.php
Maurício Meneghini Fauth 1710316b3a
Create the UrlRedirection middleware
Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
2023-08-16 20:51:23 -03:00

44 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
namespace PhpMyAdmin\Middleware;
use PhpMyAdmin\Config;
use PhpMyAdmin\Core;
use PhpMyAdmin\Theme\ThemeManager;
use PhpMyAdmin\Tracking\Tracker;
use PhpMyAdmin\UrlRedirector;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use function is_string;
final class UrlRedirection implements MiddlewareInterface
{
public function __construct(private readonly Config $config)
{
}
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
if ($request->getAttribute('route') !== '/url') {
return $handler->handle($request);
}
$container = Core::getContainerBuilder();
/** @var ThemeManager $themeManager */
$themeManager = $container->get(ThemeManager::class);
$this->config->loadUserPreferences($themeManager, true);
Tracker::enable();
UrlRedirector::redirect($this->getUrlParam($request->getQueryParams()['url'] ?? null));
}
private function getUrlParam(mixed $url): string
{
return is_string($url) ? $url : '';
}
}