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

45 lines
1.3 KiB
PHP

<?php
declare(strict_types=1);
namespace PhpMyAdmin\Middleware;
use PhpMyAdmin\Config;
use PhpMyAdmin\Core;
use PhpMyAdmin\Http\ServerRequest;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use function assert;
final class CurrentServerGlobalSetting implements MiddlewareInterface
{
public function __construct(private readonly Config $config)
{
}
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
assert($request instanceof ServerRequest);
$container = Core::getContainerBuilder();
$this->setCurrentServerGlobal($container, $this->config, $request->getParam('server'));
return $handler->handle($request);
}
private function setCurrentServerGlobal(
ContainerInterface $container,
Config $config,
mixed $serverParamFromRequest,
): void {
$server = $config->selectServer($serverParamFromRequest);
$GLOBALS['server'] = $server;
$GLOBALS['urlParams']['server'] = $server;
$container->setParameter('server', $server);
$container->setParameter('url_params', $GLOBALS['urlParams']);
}
}