From dc5bf0074c7be698f27aef4aa13ec03032cf45e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Fri, 27 May 2022 16:25:39 -0300 Subject: [PATCH 1/2] Extract Table\PrivilegesController from Server\PrivilegesController MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: MaurĂ­cio Meneghini Fauth --- .../Server/PrivilegesController.php | 17 ++----- .../Table/PrivilegesController.php | 51 +++++++++++++++---- libraries/classes/Footer.php | 11 +--- libraries/classes/Menu.php | 7 +-- libraries/classes/Server/Privileges.php | 2 +- libraries/classes/Url.php | 1 - libraries/routes.php | 1 + templates/table/privileges/index.twig | 2 +- .../Table/PrivilegesControllerTest.php | 18 ++----- 9 files changed, 55 insertions(+), 55 deletions(-) diff --git a/libraries/classes/Controllers/Server/PrivilegesController.php b/libraries/classes/Controllers/Server/PrivilegesController.php index 221f9d1483..61e308f59a 100644 --- a/libraries/classes/Controllers/Server/PrivilegesController.php +++ b/libraries/classes/Controllers/Server/PrivilegesController.php @@ -9,7 +9,6 @@ use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationCleanup; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\PrivilegesController as DatabaseController; -use PhpMyAdmin\Controllers\Table\PrivilegesController as TableController; use PhpMyAdmin\Core; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; @@ -104,8 +103,6 @@ class PrivilegesController extends AbstractController $databaseController = new DatabaseController($this->response, $this->template, $serverPrivileges, $this->dbi); - $tableController = new TableController($this->response, $this->template, $serverPrivileges, $this->dbi); - if ( (isset($_GET['viewing_mode']) && $_GET['viewing_mode'] === 'server') @@ -421,21 +418,15 @@ class PrivilegesController extends AbstractController Util::escapeMysqlWildcards(is_string($GLOBALS['dbname']) ? $GLOBALS['dbname'] : '') )); } elseif (isset($_GET['checkprivsdb']) && is_string($_GET['checkprivsdb'])) { - if (isset($_GET['checkprivstable']) && is_string($_GET['checkprivstable'])) { - $this->response->addHTML($tableController([ - 'checkprivsdb' => $_GET['checkprivsdb'], - 'checkprivstable' => $_GET['checkprivstable'], - ])); - $this->render('export_modal'); - } elseif ($this->response->isAjax() === true && empty($_REQUEST['ajax_page_request'])) { + if ($this->response->isAjax() === true && empty($_REQUEST['ajax_page_request'])) { $GLOBALS['message'] = Message::success(__('User has been added.')); $this->response->addJSON('message', $GLOBALS['message']); return; - } else { - $this->response->addHTML($databaseController(['checkprivsdb' => $_GET['checkprivsdb']])); - $this->render('export_modal'); } + + $this->response->addHTML($databaseController(['checkprivsdb' => $_GET['checkprivsdb']])); + $this->render('export_modal'); } else { if (isset($GLOBALS['dbname']) && ! is_array($GLOBALS['dbname'])) { $GLOBALS['url_dbname'] = urlencode( diff --git a/libraries/classes/Controllers/Table/PrivilegesController.php b/libraries/classes/Controllers/Table/PrivilegesController.php index c9d88d4204..8fa48a8eb1 100644 --- a/libraries/classes/Controllers/Table/PrivilegesController.php +++ b/libraries/classes/Controllers/Table/PrivilegesController.php @@ -7,13 +7,16 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; +use PhpMyAdmin\CheckUserPrivileges; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Privileges; use PhpMyAdmin\Template; use PhpMyAdmin\Util; +use function __; use function mb_strtolower; /** @@ -38,20 +41,47 @@ class PrivilegesController extends AbstractController $this->dbi = $dbi; } - /** - * @param string[] $params Request parameters - * @psalm-param array{checkprivsdb: string, checkprivstable: string} $params - */ - public function __invoke(array $params): string + public function __invoke(): void { $GLOBALS['text_dir'] = $GLOBALS['text_dir'] ?? null; + + $checkUserPrivileges = new CheckUserPrivileges($this->dbi); + $checkUserPrivileges->getPrivileges(); + + $this->addScriptFiles(['server/privileges.js', 'vendor/zxcvbn-ts.js']); + + /** + * Checks if the user is allowed to do what they try to... + */ + $isGrantUser = $this->dbi->isGrantUser(); + $isCreateUser = $this->dbi->isCreateUser(); + + if (! $this->dbi->isSuperUser() && ! $isGrantUser && ! $isCreateUser) { + $this->render('server/sub_page_header', [ + 'type' => 'privileges', + 'is_image' => false, + ]); + $this->response->addHTML( + Message::error(__('No Privileges')) + ->getDisplay() + ); + + return; + } + + if (! $isGrantUser && ! $isCreateUser) { + $this->response->addHTML(Message::notice( + __('You do not have the privileges to administrate the users!') + )->getDisplay()); + } + $scriptName = Util::getScriptNameForOption($GLOBALS['cfg']['DefaultTabTable'], 'table'); - $db = $params['checkprivsdb']; - $table = $params['checkprivstable']; + $db = $GLOBALS['db']; + $table = $GLOBALS['table']; if ($this->dbi->getLowerCaseNames() === '1') { - $db = mb_strtolower($params['checkprivsdb']); - $table = mb_strtolower($params['checkprivstable']); + $db = mb_strtolower($GLOBALS['db']); + $table = mb_strtolower($GLOBALS['table']); } $privileges = []; @@ -59,7 +89,7 @@ class PrivilegesController extends AbstractController $privileges = $this->privileges->getAllPrivileges($db, $table); } - return $this->template->render('table/privileges/index', [ + $this->render('table/privileges/index', [ 'db' => $db, 'table' => $table, 'is_superuser' => $this->dbi->isSuperUser(), @@ -69,5 +99,6 @@ class PrivilegesController extends AbstractController 'is_grantuser' => $this->dbi->isGrantUser(), 'privileges' => $privileges, ]); + $this->render('export_modal'); } } diff --git a/libraries/classes/Footer.php b/libraries/classes/Footer.php index 3e9e33709e..a54bcf568a 100644 --- a/libraries/classes/Footer.php +++ b/libraries/classes/Footer.php @@ -154,7 +154,7 @@ class Footer $params['server'] = $GLOBALS['server']; // needed for server privileges tabs - if (isset($_GET['viewing_mode']) && in_array($_GET['viewing_mode'], ['server', 'db', 'table'])) { + if (isset($_GET['viewing_mode']) && in_array($_GET['viewing_mode'], ['server', 'db'])) { $params['viewing_mode'] = $_GET['viewing_mode']; } @@ -167,15 +167,6 @@ class Footer $params['checkprivsdb'] = $_GET['checkprivsdb']; } - /** - * @todo coming from /server/privileges, here $table is not set, - * add the following condition below when that is fixed - * && $_REQUEST['checkprivstable'] == $table - */ - if (isset($_GET['checkprivstable'])) { - $params['checkprivstable'] = $_GET['checkprivstable']; - } - if (isset($_REQUEST['single_table']) && in_array($_REQUEST['single_table'], [true, false])) { $params['single_table'] = $_REQUEST['single_table']; } diff --git a/libraries/classes/Menu.php b/libraries/classes/Menu.php index cd4e389b2a..299bc986e0 100644 --- a/libraries/classes/Menu.php +++ b/libraries/classes/Menu.php @@ -286,14 +286,11 @@ class Menu } if (($isSuperUser || $isCreateOrGrantUser) && ! $isSystemSchema) { - $tabs['privileges']['route'] = '/server/privileges'; - $tabs['privileges']['args']['checkprivsdb'] = $this->db; - $tabs['privileges']['args']['checkprivstable'] = $this->table; + $tabs['privileges']['route'] = '/table/privileges'; // stay on table view - $tabs['privileges']['args']['viewing_mode'] = 'table'; $tabs['privileges']['text'] = __('Privileges'); $tabs['privileges']['icon'] = 's_rights'; - $tabs['privileges']['active'] = $route === '/server/privileges'; + $tabs['privileges']['active'] = $route === '/table/privileges'; } /** diff --git a/libraries/classes/Server/Privileges.php b/libraries/classes/Server/Privileges.php index 6ad78d4b8c..2678e6aa6f 100644 --- a/libraries/classes/Server/Privileges.php +++ b/libraries/classes/Server/Privileges.php @@ -2908,7 +2908,7 @@ class Privileges } if (! empty($table)) { - $urlParams['tablename'] = $relParams['checkprivstable'] = $table; + $urlParams['tablename'] = $table; } return $this->template->render('server/privileges/add_user_fieldset', [ diff --git a/libraries/classes/Url.php b/libraries/classes/Url.php index d152d7577a..b7aa92a6dc 100644 --- a/libraries/classes/Url.php +++ b/libraries/classes/Url.php @@ -271,7 +271,6 @@ class Url 'dbname', 'tablename', 'checkprivsdb', - 'checkprivstable', ]; $paramsToEncrypt = []; foreach ($params as $paramKey => $paramValue) { diff --git a/libraries/routes.php b/libraries/routes.php index de2f9590cd..205450ede1 100644 --- a/libraries/routes.php +++ b/libraries/routes.php @@ -239,6 +239,7 @@ return static function (RouteCollector $routes): void { $routes->post('/repair', Table\Partition\RepairController::class); $routes->post('/truncate', Table\Partition\TruncateController::class); }); + $routes->get('/privileges', Table\PrivilegesController::class); $routes->addRoute(['GET', 'POST'], '/operations', Table\OperationsController::class); $routes->addRoute(['GET', 'POST'], '/recent-favorite', Table\RecentFavoriteController::class); $routes->addRoute(['GET', 'POST'], '/relation', Table\RelationController::class); diff --git a/templates/table/privileges/index.twig b/templates/table/privileges/index.twig index 01c1d7b362..51e5e0d011 100644 --- a/templates/table/privileges/index.twig +++ b/templates/table/privileges/index.twig @@ -136,7 +136,7 @@ 'adduser': true, 'dbname': db, 'tablename': table - }) }}" rel="{{ get_common({'checkprivsdb': db, 'checkprivstable': table}) }}"> + }) }}"> {{ get_icon('b_usradd', 'Add user account'|trans) }} diff --git a/test/classes/Controllers/Table/PrivilegesControllerTest.php b/test/classes/Controllers/Table/PrivilegesControllerTest.php index 86e619a4e9..641b3e3c53 100644 --- a/test/classes/Controllers/Table/PrivilegesControllerTest.php +++ b/test/classes/Controllers/Table/PrivilegesControllerTest.php @@ -5,10 +5,10 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Controllers\Table; use PhpMyAdmin\Controllers\Table\PrivilegesController; -use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Privileges; use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; +use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PhpMyAdmin\Url; use function __; @@ -43,12 +43,9 @@ class PrivilegesControllerTest extends AbstractTestCase $serverPrivileges->method('getAllPrivileges') ->willReturn($privileges); - $actual = (new PrivilegesController( - ResponseRenderer::getInstance(), - new Template(), - $serverPrivileges, - $GLOBALS['dbi'] - ))(['checkprivsdb' => $GLOBALS['db'], 'checkprivstable' => $GLOBALS['table']]); + $response = new ResponseRenderer(); + (new PrivilegesController($response, new Template(), $serverPrivileges, $GLOBALS['dbi']))(); + $actual = $response->getHTMLResult(); $this->assertStringContainsString($GLOBALS['db'] . '.' . $GLOBALS['table'], $actual); @@ -94,12 +91,5 @@ class PrivilegesControllerTest extends AbstractTestCase _pgettext('Create new user', 'New'), $actual ); - $this->assertStringContainsString( - Url::getCommon([ - 'checkprivsdb' => $GLOBALS['db'], - 'checkprivstable' => $GLOBALS['table'], - ]), - $actual - ); } } From d58057daeceb09103bab83ada547248be9610799 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Fri, 27 May 2022 17:13:23 -0300 Subject: [PATCH 2/2] Extract Database\PrivilegesController from Server\PrivilegesController MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: MaurĂ­cio Meneghini Fauth --- .../Database/PrivilegesController.php | 66 ++++++++++++++++--- .../Server/PrivilegesController.php | 48 +------------- libraries/classes/Footer.php | 14 ---- libraries/classes/Menu.php | 7 +- libraries/classes/Server/Privileges.php | 9 +-- libraries/classes/Url.php | 1 - libraries/routes.php | 1 + psalm-baseline.xml | 3 - templates/database/privileges/index.twig | 2 +- templates/server/databases/index.twig | 5 +- .../server/privileges/add_user_fieldset.twig | 5 +- templates/server/privileges/initials_row.twig | 4 +- templates/server/privileges/subnav.twig | 2 +- .../Database/PrivilegesControllerTest.php | 31 +++++---- .../Server/PrivilegesControllerTest.php | 2 - 15 files changed, 91 insertions(+), 109 deletions(-) diff --git a/libraries/classes/Controllers/Database/PrivilegesController.php b/libraries/classes/Controllers/Database/PrivilegesController.php index 2f08cd48eb..bc2f3ab4b4 100644 --- a/libraries/classes/Controllers/Database/PrivilegesController.php +++ b/libraries/classes/Controllers/Database/PrivilegesController.php @@ -7,14 +7,19 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database; +use PhpMyAdmin\CheckUserPrivileges; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Privileges; use PhpMyAdmin\Template; use PhpMyAdmin\Util; +use function __; use function mb_strtolower; +use function ob_get_clean; +use function ob_start; /** * Controller for database privileges @@ -38,18 +43,62 @@ class PrivilegesController extends AbstractController $this->dbi = $dbi; } - /** - * @param string[] $params Request parameters - * @psalm-param array{checkprivsdb: string} $params - */ - public function __invoke(array $params): string + public function __invoke(): void { $GLOBALS['text_dir'] = $GLOBALS['text_dir'] ?? null; + + $checkUserPrivileges = new CheckUserPrivileges($this->dbi); + $checkUserPrivileges->getPrivileges(); + + $this->addScriptFiles(['server/privileges.js', 'vendor/zxcvbn-ts.js']); + + /** + * Checks if the user is allowed to do what they try to... + */ + $isGrantUser = $this->dbi->isGrantUser(); + $isCreateUser = $this->dbi->isCreateUser(); + + if (! $this->dbi->isSuperUser() && ! $isGrantUser && ! $isCreateUser) { + $this->render('server/sub_page_header', [ + 'type' => 'privileges', + 'is_image' => false, + ]); + $this->response->addHTML( + Message::error(__('No Privileges')) + ->getDisplay() + ); + + return; + } + + if (! $isGrantUser && ! $isCreateUser) { + $this->response->addHTML(Message::notice( + __('You do not have the privileges to administrate the users!') + )->getDisplay()); + } + + // Gets the database structure + $GLOBALS['sub_part'] = '_structure'; + ob_start(); + + [ + $GLOBALS['tables'], + $GLOBALS['num_tables'], + $GLOBALS['total_num_tables'], + $GLOBALS['sub_part'],,, + $GLOBALS['tooltip_truename'], + $GLOBALS['tooltip_aliasname'], + $GLOBALS['pos'], + ] = Util::getDbInfo($GLOBALS['db'], $GLOBALS['sub_part']); + + $content = ob_get_clean(); + $this->response->addHTML($content . "\n"); + $scriptName = Util::getScriptNameForOption($GLOBALS['cfg']['DefaultTabDatabase'], 'database'); - $db = $params['checkprivsdb']; + $db = $GLOBALS['db']; if ($this->dbi->getLowerCaseNames() === '1') { - $db = mb_strtolower($params['checkprivsdb']); + $db = mb_strtolower($GLOBALS['db']); } $privileges = []; @@ -57,7 +106,7 @@ class PrivilegesController extends AbstractController $privileges = $this->privileges->getAllPrivileges($db); } - return $this->template->render('database/privileges/index', [ + $this->render('database/privileges/index', [ 'is_superuser' => $this->dbi->isSuperUser(), 'db' => $db, 'database_url' => $scriptName, @@ -66,5 +115,6 @@ class PrivilegesController extends AbstractController 'is_grantuser' => $this->dbi->isGrantUser(), 'privileges' => $privileges, ]); + $this->render('export_modal'); } } diff --git a/libraries/classes/Controllers/Server/PrivilegesController.php b/libraries/classes/Controllers/Server/PrivilegesController.php index 61e308f59a..41f16fb5a2 100644 --- a/libraries/classes/Controllers/Server/PrivilegesController.php +++ b/libraries/classes/Controllers/Server/PrivilegesController.php @@ -8,7 +8,6 @@ use PhpMyAdmin\CheckUserPrivileges; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationCleanup; use PhpMyAdmin\Controllers\AbstractController; -use PhpMyAdmin\Controllers\Database\PrivilegesController as DatabaseController; use PhpMyAdmin\Core; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; @@ -25,8 +24,6 @@ use function header; use function implode; use function is_array; use function is_string; -use function ob_get_clean; -use function ob_start; use function str_replace; use function urlencode; @@ -101,13 +98,7 @@ class PrivilegesController extends AbstractController new Plugins($this->dbi) ); - $databaseController = new DatabaseController($this->response, $this->template, $serverPrivileges, $this->dbi); - - if ( - (isset($_GET['viewing_mode']) - && $_GET['viewing_mode'] === 'server') - && $relationParameters->configurableMenusFeature !== null - ) { + if ($relationParameters->configurableMenusFeature !== null) { $this->response->addHTML('
'); $this->render('server/privileges/subnav', [ 'active' => 'privileges', @@ -368,26 +359,7 @@ class PrivilegesController extends AbstractController /** * Displays the links */ - if (isset($_GET['viewing_mode']) && $_GET['viewing_mode'] === 'db') { - $GLOBALS['db'] = $_REQUEST['db'] = $_GET['checkprivsdb']; - - // Gets the database structure - $GLOBALS['sub_part'] = '_structure'; - ob_start(); - - [ - $GLOBALS['tables'], - $GLOBALS['num_tables'], - $GLOBALS['total_num_tables'], - $GLOBALS['sub_part'],,, - $GLOBALS['tooltip_truename'], - $GLOBALS['tooltip_aliasname'], - $GLOBALS['pos'], - ] = Util::getDbInfo($GLOBALS['db'], $GLOBALS['sub_part']); - - $content = ob_get_clean(); - $this->response->addHTML($content . "\n"); - } elseif (! empty($GLOBALS['message'])) { + if (! empty($GLOBALS['message'])) { $this->response->addHTML(Generator::getMessage($GLOBALS['message'])); unset($GLOBALS['message']); } @@ -417,16 +389,6 @@ class PrivilegesController extends AbstractController $this->response->addHTML($serverPrivileges->getHtmlForAddUser( Util::escapeMysqlWildcards(is_string($GLOBALS['dbname']) ? $GLOBALS['dbname'] : '') )); - } elseif (isset($_GET['checkprivsdb']) && is_string($_GET['checkprivsdb'])) { - if ($this->response->isAjax() === true && empty($_REQUEST['ajax_page_request'])) { - $GLOBALS['message'] = Message::success(__('User has been added.')); - $this->response->addJSON('message', $GLOBALS['message']); - - return; - } - - $this->response->addHTML($databaseController(['checkprivsdb' => $_GET['checkprivsdb']])); - $this->render('export_modal'); } else { if (isset($GLOBALS['dbname']) && ! is_array($GLOBALS['dbname'])) { $GLOBALS['url_dbname'] = urlencode( @@ -479,11 +441,7 @@ class PrivilegesController extends AbstractController } } - if ( - ! isset($_GET['viewing_mode']) - || $_GET['viewing_mode'] !== 'server' - || $relationParameters->configurableMenusFeature === null - ) { + if ($relationParameters->configurableMenusFeature === null) { return; } diff --git a/libraries/classes/Footer.php b/libraries/classes/Footer.php index a54bcf568a..879d467827 100644 --- a/libraries/classes/Footer.php +++ b/libraries/classes/Footer.php @@ -153,20 +153,6 @@ class Footer $params['server'] = $GLOBALS['server']; - // needed for server privileges tabs - if (isset($_GET['viewing_mode']) && in_array($_GET['viewing_mode'], ['server', 'db'])) { - $params['viewing_mode'] = $_GET['viewing_mode']; - } - - /** - * @todo coming from /server/privileges, here $db is not set, - * add the following condition below when that is fixed - * && $_GET['checkprivsdb'] == $db - */ - if (isset($_GET['checkprivsdb'])) { - $params['checkprivsdb'] = $_GET['checkprivsdb']; - } - if (isset($_REQUEST['single_table']) && in_array($_REQUEST['single_table'], [true, false])) { $params['single_table'] = $_REQUEST['single_table']; } diff --git a/libraries/classes/Menu.php b/libraries/classes/Menu.php index 299bc986e0..6a5f6224b2 100644 --- a/libraries/classes/Menu.php +++ b/libraries/classes/Menu.php @@ -394,13 +394,11 @@ class Menu $tabs['operation']['active'] = $route === '/database/operations'; if ($isSuperUser || $isCreateOrGrantUser) { - $tabs['privileges']['route'] = '/server/privileges'; - $tabs['privileges']['args']['checkprivsdb'] = $this->db; + $tabs['privileges']['route'] = '/database/privileges'; // stay on database view - $tabs['privileges']['args']['viewing_mode'] = 'db'; $tabs['privileges']['text'] = __('Privileges'); $tabs['privileges']['icon'] = 's_rights'; - $tabs['privileges']['active'] = $route === '/server/privileges'; + $tabs['privileges']['active'] = $route === '/database/privileges'; } $tabs['routines']['route'] = '/database/routines'; @@ -500,7 +498,6 @@ class Menu '/server/privileges', '/server/user-groups', ]); - $tabs['rights']['args']['viewing_mode'] = 'server'; } $tabs['export']['icon'] = 'b_export'; diff --git a/libraries/classes/Server/Privileges.php b/libraries/classes/Server/Privileges.php index 2678e6aa6f..df4d8a2f77 100644 --- a/libraries/classes/Server/Privileges.php +++ b/libraries/classes/Server/Privileges.php @@ -2101,7 +2101,6 @@ class Privileges return $this->template->render('server/privileges/initials_row', [ 'array_initials' => $arrayInitials, 'initial' => $_GET['initial'] ?? null, - 'viewing_mode' => $_GET['viewing_mode'] ?? null, ]); } @@ -2901,20 +2900,16 @@ class Privileges return ''; } - $relParams = []; $urlParams = ['adduser' => 1]; if (! empty($db)) { - $urlParams['dbname'] = $relParams['checkprivsdb'] = $db; + $urlParams['dbname'] = $db; } if (! empty($table)) { $urlParams['tablename'] = $table; } - return $this->template->render('server/privileges/add_user_fieldset', [ - 'url_params' => $urlParams, - 'rel_params' => $relParams, - ]); + return $this->template->render('server/privileges/add_user_fieldset', ['url_params' => $urlParams]); } /** diff --git a/libraries/classes/Url.php b/libraries/classes/Url.php index b7aa92a6dc..dfb363b7d8 100644 --- a/libraries/classes/Url.php +++ b/libraries/classes/Url.php @@ -270,7 +270,6 @@ class Url 'hostname', 'dbname', 'tablename', - 'checkprivsdb', ]; $paramsToEncrypt = []; foreach ($params as $paramKey => $paramValue) { diff --git a/libraries/routes.php b/libraries/routes.php index 205450ede1..508c8deb63 100644 --- a/libraries/routes.php +++ b/libraries/routes.php @@ -71,6 +71,7 @@ return static function (RouteCollector $routes): void { $routes->addRoute(['GET', 'POST'], '', Database\OperationsController::class); $routes->post('/collation', Database\Operations\CollationController::class); }); + $routes->get('/privileges', Database\PrivilegesController::class); $routes->addRoute(['GET', 'POST'], '/qbe', Database\QueryByExampleController::class); $routes->addRoute(['GET', 'POST'], '/routines', Database\RoutinesController::class); $routes->addRoute(['GET', 'POST'], '/search', Database\SearchController::class); diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 699e0c2b7b..fa0687f8ca 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -6706,10 +6706,7 @@ $info - $params['checkprivsdb'] - $params['checkprivstable'] $params['single_table'] - $params['viewing_mode'] $subObject diff --git a/templates/database/privileges/index.twig b/templates/database/privileges/index.twig index 773c361168..9c68d50feb 100644 --- a/templates/database/privileges/index.twig +++ b/templates/database/privileges/index.twig @@ -132,7 +132,7 @@ + }) }}"> {{ get_icon('b_usradd', 'Add user account'|trans) }} diff --git a/templates/server/databases/index.twig b/templates/server/databases/index.twig index 63b1acb48b..c876f87825 100644 --- a/templates/server/databases/index.twig +++ b/templates/server/databases/index.twig @@ -235,10 +235,7 @@ {{ get_icon('s_rights', 'Check privileges'|trans) }} diff --git a/templates/server/privileges/add_user_fieldset.twig b/templates/server/privileges/add_user_fieldset.twig index ecb594e8fa..892eea75ff 100644 --- a/templates/server/privileges/add_user_fieldset.twig +++ b/templates/server/privileges/add_user_fieldset.twig @@ -2,10 +2,7 @@
{% trans %}New{% context %}Create new user{% endtrans %} - + {{ get_icon('b_usradd') }}{% trans 'Add user account' %}
diff --git a/templates/server/privileges/initials_row.twig b/templates/server/privileges/initials_row.twig index 622310d65b..c546433b0a 100644 --- a/templates/server/privileges/initials_row.twig +++ b/templates/server/privileges/initials_row.twig @@ -4,7 +4,7 @@ {% if tmp_initial is not same as(null) %} {% if initial_was_found %}
  • - {{ tmp_initial }} + {{ tmp_initial }}
  • {% else %}
  • @@ -14,7 +14,7 @@ {% endif %} {% endfor %}
  • - {% trans 'Show all' %} + {% trans 'Show all' %}
  • diff --git a/templates/server/privileges/subnav.twig b/templates/server/privileges/subnav.twig index 84c7443625..29f0da1bda 100644 --- a/templates/server/privileges/subnav.twig +++ b/templates/server/privileges/subnav.twig @@ -1,7 +1,7 @@