44 lines
1.2 KiB
PHP
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 : '';
|
|
}
|
|
}
|