Make all setup controllers implement InvocableController
Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
This commit is contained in:
parent
32447c6f72
commit
0a681ea9ed
@ -869,7 +869,7 @@ return [
|
||||
],
|
||||
Setup\MainController::class => [
|
||||
'class' => Setup\MainController::class,
|
||||
'arguments' => ['@' . ResponseFactory::class, '@template', '@console'],
|
||||
'arguments' => ['@' . ResponseFactory::class, '@response', '@template'],
|
||||
],
|
||||
Setup\ShowConfigController::class => [
|
||||
'class' => Setup\ShowConfigController::class,
|
||||
|
||||
@ -4,21 +4,33 @@ declare(strict_types=1);
|
||||
|
||||
namespace PhpMyAdmin\Controllers\Setup;
|
||||
|
||||
use PhpMyAdmin\Controllers\InvocableController;
|
||||
use PhpMyAdmin\Http\Factory\ResponseFactory;
|
||||
use PhpMyAdmin\Http\Response;
|
||||
use PhpMyAdmin\Http\ServerRequest;
|
||||
use PhpMyAdmin\ResponseRenderer;
|
||||
use PhpMyAdmin\Setup\ConfigGenerator;
|
||||
use PhpMyAdmin\Setup\SetupHelper;
|
||||
use PhpMyAdmin\Template;
|
||||
|
||||
use function is_string;
|
||||
|
||||
final class ConfigController
|
||||
final class ConfigController implements InvocableController
|
||||
{
|
||||
public function __construct(private readonly Template $template)
|
||||
{
|
||||
public function __construct(
|
||||
private readonly ResponseFactory $responseFactory,
|
||||
private readonly ResponseRenderer $responseRenderer,
|
||||
private readonly Template $template,
|
||||
) {
|
||||
}
|
||||
|
||||
public function __invoke(ServerRequest $request): string
|
||||
public function __invoke(ServerRequest $request): Response
|
||||
{
|
||||
$response = $this->responseFactory->createResponse();
|
||||
foreach ($this->responseRenderer->getHeader()->getHttpHeaders() as $name => $value) {
|
||||
$response = $response->withHeader($name, $value);
|
||||
}
|
||||
|
||||
$pages = SetupHelper::getPages();
|
||||
|
||||
static $hasCheckPageRefresh = false;
|
||||
@ -30,13 +42,13 @@ final class ConfigController
|
||||
|
||||
$config = ConfigGenerator::getConfigFile($configFile);
|
||||
|
||||
return $this->template->render('setup/config/index', [
|
||||
return $response->write($this->template->render('setup/config/index', [
|
||||
'formset' => $this->getFormSetParam($request->getQueryParam('formset')),
|
||||
'pages' => $pages,
|
||||
'eol' => $this->getEolParam($request->getQueryParam('eol')),
|
||||
'config' => $config,
|
||||
'has_check_page_refresh' => $hasCheckPageRefresh,
|
||||
]);
|
||||
]));
|
||||
}
|
||||
|
||||
private function getFormSetParam(mixed $formSetParam): string
|
||||
|
||||
@ -5,8 +5,12 @@ declare(strict_types=1);
|
||||
namespace PhpMyAdmin\Controllers\Setup;
|
||||
|
||||
use PhpMyAdmin\Config\Forms\Setup\SetupFormList;
|
||||
use PhpMyAdmin\Controllers\InvocableController;
|
||||
use PhpMyAdmin\Http\Factory\ResponseFactory;
|
||||
use PhpMyAdmin\Http\Response;
|
||||
use PhpMyAdmin\Http\ServerRequest;
|
||||
use PhpMyAdmin\LanguageManager;
|
||||
use PhpMyAdmin\ResponseRenderer;
|
||||
use PhpMyAdmin\Setup\FormProcessing;
|
||||
use PhpMyAdmin\Setup\SetupHelper;
|
||||
use PhpMyAdmin\Template;
|
||||
@ -16,25 +20,33 @@ use function is_string;
|
||||
use function ob_get_clean;
|
||||
use function ob_start;
|
||||
|
||||
final class FormController
|
||||
final class FormController implements InvocableController
|
||||
{
|
||||
public function __construct(private readonly Template $template)
|
||||
{
|
||||
public function __construct(
|
||||
private readonly ResponseFactory $responseFactory,
|
||||
private readonly ResponseRenderer $responseRenderer,
|
||||
private readonly Template $template,
|
||||
) {
|
||||
}
|
||||
|
||||
public function __invoke(ServerRequest $request): string
|
||||
public function __invoke(ServerRequest $request): Response
|
||||
{
|
||||
$response = $this->responseFactory->createResponse();
|
||||
foreach ($this->responseRenderer->getHeader()->getHttpHeaders() as $name => $value) {
|
||||
$response = $response->withHeader($name, $value);
|
||||
}
|
||||
|
||||
$pages = SetupHelper::getPages();
|
||||
|
||||
$formSet = $this->getFormSetParam($request->getQueryParam('formset'));
|
||||
|
||||
$formClass = SetupFormList::get($formSet);
|
||||
if ($formClass === null) {
|
||||
return $this->template->render('error/generic', [
|
||||
return $response->write($this->template->render('error/generic', [
|
||||
'lang' => $GLOBALS['lang'] ?? 'en',
|
||||
'dir' => LanguageManager::$textDir,
|
||||
'error_message' => __('Incorrect form specified!'),
|
||||
]);
|
||||
]));
|
||||
}
|
||||
|
||||
$configFile = SetupHelper::createConfigFile();
|
||||
@ -44,12 +56,12 @@ final class FormController
|
||||
FormProcessing::process($form);
|
||||
$page = ob_get_clean();
|
||||
|
||||
return $this->template->render('setup/form/index', [
|
||||
return $response->write($this->template->render('setup/form/index', [
|
||||
'formset' => $formSet,
|
||||
'pages' => $pages,
|
||||
'name' => $form::getName(),
|
||||
'page' => $page,
|
||||
]);
|
||||
]));
|
||||
}
|
||||
|
||||
private function getFormSetParam(mixed $formSetParam): string
|
||||
|
||||
@ -6,8 +6,12 @@ namespace PhpMyAdmin\Controllers\Setup;
|
||||
|
||||
use PhpMyAdmin\Config;
|
||||
use PhpMyAdmin\Config\ServerConfigChecks;
|
||||
use PhpMyAdmin\Controllers\InvocableController;
|
||||
use PhpMyAdmin\Http\Factory\ResponseFactory;
|
||||
use PhpMyAdmin\Http\Response;
|
||||
use PhpMyAdmin\Http\ServerRequest;
|
||||
use PhpMyAdmin\LanguageManager;
|
||||
use PhpMyAdmin\ResponseRenderer;
|
||||
use PhpMyAdmin\Setup\Index;
|
||||
use PhpMyAdmin\Setup\SetupHelper;
|
||||
use PhpMyAdmin\Template;
|
||||
@ -17,14 +21,22 @@ use function array_keys;
|
||||
use function is_scalar;
|
||||
use function is_string;
|
||||
|
||||
final class HomeController
|
||||
final class HomeController implements InvocableController
|
||||
{
|
||||
public function __construct(private readonly Template $template)
|
||||
{
|
||||
public function __construct(
|
||||
private readonly ResponseFactory $responseFactory,
|
||||
private readonly ResponseRenderer $responseRenderer,
|
||||
private readonly Template $template,
|
||||
) {
|
||||
}
|
||||
|
||||
public function __invoke(ServerRequest $request): string
|
||||
public function __invoke(ServerRequest $request): Response
|
||||
{
|
||||
$response = $this->responseFactory->createResponse();
|
||||
foreach ($this->responseRenderer->getHeader()->getHttpHeaders() as $name => $value) {
|
||||
$response = $response->withHeader($name, $value);
|
||||
}
|
||||
|
||||
$pages = SetupHelper::getPages();
|
||||
|
||||
// message handling
|
||||
@ -87,7 +99,7 @@ final class HomeController
|
||||
$hasCheckPageRefresh = true;
|
||||
}
|
||||
|
||||
return $this->template->render('setup/home/index', [
|
||||
return $response->write($this->template->render('setup/home/index', [
|
||||
'formset' => $this->getFormSetParam($request->getQueryParam('formset')),
|
||||
'languages' => $languages,
|
||||
'messages' => $messages,
|
||||
@ -98,7 +110,7 @@ final class HomeController
|
||||
'eol' => isset($_SESSION['eol']) && is_scalar($_SESSION['eol'])
|
||||
? $_SESSION['eol']
|
||||
: (Config::getInstance()->get('PMA_IS_WINDOWS') ? 'win' : 'unix'),
|
||||
]);
|
||||
]));
|
||||
}
|
||||
|
||||
private function getFormSetParam(mixed $formSetParam): string
|
||||
|
||||
@ -6,15 +6,13 @@ namespace PhpMyAdmin\Controllers\Setup;
|
||||
|
||||
use Fig\Http\Message\StatusCodeInterface;
|
||||
use PhpMyAdmin\Config;
|
||||
use PhpMyAdmin\Console;
|
||||
use PhpMyAdmin\Controllers\InvocableController;
|
||||
use PhpMyAdmin\Header;
|
||||
use PhpMyAdmin\Http\Factory\ResponseFactory;
|
||||
use PhpMyAdmin\Http\Response;
|
||||
use PhpMyAdmin\Http\ServerRequest;
|
||||
use PhpMyAdmin\LanguageManager;
|
||||
use PhpMyAdmin\ResponseRenderer;
|
||||
use PhpMyAdmin\Template;
|
||||
use PhpMyAdmin\Url;
|
||||
|
||||
use function __;
|
||||
use function file_exists;
|
||||
@ -26,8 +24,8 @@ final class MainController implements InvocableController
|
||||
{
|
||||
public function __construct(
|
||||
private readonly ResponseFactory $responseFactory,
|
||||
private readonly ResponseRenderer $responseRenderer,
|
||||
private readonly Template $template,
|
||||
private readonly Console $console,
|
||||
) {
|
||||
}
|
||||
|
||||
@ -48,35 +46,22 @@ final class MainController implements InvocableController
|
||||
$pageParam = $request->getQueryParam('page');
|
||||
$page = in_array($pageParam, ['form', 'config', 'servers'], true) ? $pageParam : 'index';
|
||||
|
||||
$response = $this->responseFactory->createResponse();
|
||||
$header = new Header($this->template, $this->console, $config);
|
||||
foreach ($header->getHttpHeaders() as $name => $value) {
|
||||
// Sent security-related headers
|
||||
$response = $response->withHeader($name, $value);
|
||||
}
|
||||
|
||||
if ($page === 'form') {
|
||||
return $response->write((new FormController($this->template))($request));
|
||||
return (new FormController($this->responseFactory, $this->responseRenderer, $this->template))($request);
|
||||
}
|
||||
|
||||
if ($page === 'config') {
|
||||
return $response->write((new ConfigController($this->template))($request));
|
||||
return (new ConfigController($this->responseFactory, $this->responseRenderer, $this->template))($request);
|
||||
}
|
||||
|
||||
if ($page === 'servers' && $request->getQueryParam('mode') === 'remove' && $request->isPost()) {
|
||||
return (new ServerDestroyController($this->responseFactory, $this->responseRenderer))($request);
|
||||
}
|
||||
|
||||
if ($page === 'servers') {
|
||||
if ($request->getQueryParam('mode') === 'remove' && $request->isPost()) {
|
||||
(new ServerDestroyController())($request);
|
||||
$response = $response->withStatus(StatusCodeInterface::STATUS_FOUND);
|
||||
|
||||
return $response->withHeader(
|
||||
'Location',
|
||||
'../setup/index.php' . Url::getCommonRaw(['route' => '/setup']),
|
||||
);
|
||||
}
|
||||
|
||||
return $response->write((new ServersController($this->template))($request));
|
||||
return (new ServersController($this->responseFactory, $this->responseRenderer, $this->template))($request);
|
||||
}
|
||||
|
||||
return $response->write((new HomeController($this->template))($request));
|
||||
return (new HomeController($this->responseFactory, $this->responseRenderer, $this->template))($request);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,24 +4,44 @@ declare(strict_types=1);
|
||||
|
||||
namespace PhpMyAdmin\Controllers\Setup;
|
||||
|
||||
use Fig\Http\Message\StatusCodeInterface;
|
||||
use PhpMyAdmin\Controllers\InvocableController;
|
||||
use PhpMyAdmin\Http\Factory\ResponseFactory;
|
||||
use PhpMyAdmin\Http\Response;
|
||||
use PhpMyAdmin\Http\ServerRequest;
|
||||
use PhpMyAdmin\ResponseRenderer;
|
||||
use PhpMyAdmin\Setup\SetupHelper;
|
||||
use PhpMyAdmin\Url;
|
||||
|
||||
use function is_numeric;
|
||||
|
||||
final class ServerDestroyController
|
||||
final class ServerDestroyController implements InvocableController
|
||||
{
|
||||
public function __invoke(ServerRequest $request): void
|
||||
public function __construct(
|
||||
private readonly ResponseFactory $responseFactory,
|
||||
private readonly ResponseRenderer $responseRenderer,
|
||||
) {
|
||||
}
|
||||
|
||||
public function __invoke(ServerRequest $request): Response
|
||||
{
|
||||
$response = $this->responseFactory->createResponse();
|
||||
foreach ($this->responseRenderer->getHeader()->getHttpHeaders() as $name => $value) {
|
||||
$response = $response->withHeader($name, $value);
|
||||
}
|
||||
|
||||
$configFile = SetupHelper::createConfigFile();
|
||||
|
||||
$id = $this->getIdParam($request->getQueryParam('id'));
|
||||
$hasServer = $id >= 1 && $configFile->get('Servers/' . $id) !== null;
|
||||
if (! $hasServer) {
|
||||
return;
|
||||
if ($hasServer) {
|
||||
$configFile->removeServer($id);
|
||||
}
|
||||
|
||||
$configFile->removeServer($id);
|
||||
return $response->withStatus(StatusCodeInterface::STATUS_FOUND)->withHeader(
|
||||
'Location',
|
||||
'../setup/index.php' . Url::getCommonRaw(['route' => '/setup']),
|
||||
);
|
||||
}
|
||||
|
||||
/** @psalm-return int<0, max> */
|
||||
|
||||
@ -5,7 +5,11 @@ declare(strict_types=1);
|
||||
namespace PhpMyAdmin\Controllers\Setup;
|
||||
|
||||
use PhpMyAdmin\Config\Forms\Setup\ServersForm;
|
||||
use PhpMyAdmin\Controllers\InvocableController;
|
||||
use PhpMyAdmin\Http\Factory\ResponseFactory;
|
||||
use PhpMyAdmin\Http\Response;
|
||||
use PhpMyAdmin\Http\ServerRequest;
|
||||
use PhpMyAdmin\ResponseRenderer;
|
||||
use PhpMyAdmin\Setup\FormProcessing;
|
||||
use PhpMyAdmin\Setup\SetupHelper;
|
||||
use PhpMyAdmin\Template;
|
||||
@ -16,14 +20,22 @@ use function is_string;
|
||||
use function ob_get_clean;
|
||||
use function ob_start;
|
||||
|
||||
final class ServersController
|
||||
final class ServersController implements InvocableController
|
||||
{
|
||||
public function __construct(private readonly Template $template)
|
||||
{
|
||||
public function __construct(
|
||||
private readonly ResponseFactory $responseFactory,
|
||||
private readonly ResponseRenderer $responseRenderer,
|
||||
private readonly Template $template,
|
||||
) {
|
||||
}
|
||||
|
||||
public function __invoke(ServerRequest $request): string
|
||||
public function __invoke(ServerRequest $request): Response
|
||||
{
|
||||
$response = $this->responseFactory->createResponse();
|
||||
foreach ($this->responseRenderer->getHeader()->getHttpHeaders() as $name => $value) {
|
||||
$response = $response->withHeader($name, $value);
|
||||
}
|
||||
|
||||
$configFile = SetupHelper::createConfigFile();
|
||||
|
||||
$id = $this->getIdParam($request->getQueryParam('id'));
|
||||
@ -41,7 +53,7 @@ final class ServersController
|
||||
FormProcessing::process(new ServersForm($configFile, $id));
|
||||
$page = ob_get_clean();
|
||||
|
||||
return $this->template->render('setup/servers/index', [
|
||||
return $response->write($this->template->render('setup/servers/index', [
|
||||
'formset' => $this->getFormSetParam($request->getQueryParam('formset')),
|
||||
'pages' => $pages,
|
||||
'has_server' => $hasServer,
|
||||
@ -49,7 +61,7 @@ final class ServersController
|
||||
'server_id' => $id,
|
||||
'server_dsn' => $configFile->getServerDSN($id),
|
||||
'page' => $page,
|
||||
]);
|
||||
]));
|
||||
}
|
||||
|
||||
private function getFormSetParam(mixed $formSetParam): string
|
||||
|
||||
Loading…
Reference in New Issue
Block a user