Refactor Server/Privileges
Use dependency injection Signed-off-by: Maurício Meneghini Fauth <mauriciofauth@gmail.com>
This commit is contained in:
parent
b5e836da1d
commit
aeba92f982
@ -10,6 +10,8 @@ declare(strict_types=1);
|
||||
namespace PhpMyAdmin\Display;
|
||||
|
||||
use PhpMyAdmin\Message;
|
||||
use PhpMyAdmin\Relation;
|
||||
use PhpMyAdmin\RelationCleanup;
|
||||
use PhpMyAdmin\Server\Privileges;
|
||||
use PhpMyAdmin\Template;
|
||||
use PhpMyAdmin\Url;
|
||||
@ -34,7 +36,14 @@ class ChangePassword
|
||||
*/
|
||||
public static function getHtml($mode, $username, $hostname)
|
||||
{
|
||||
$serverPrivileges = new Privileges(new Template());
|
||||
$relation = new Relation($GLOBALS['dbi']);
|
||||
$serverPrivileges = new Privileges(
|
||||
new Template(),
|
||||
$GLOBALS['dbi'],
|
||||
$relation,
|
||||
new RelationCleanup($GLOBALS['dbi'], $relation)
|
||||
);
|
||||
|
||||
/**
|
||||
* autocomplete feature of IE kills the "onchange" event handler and it
|
||||
* must be replaced by the "onpropertychange" one in this case
|
||||
|
||||
@ -42,17 +42,29 @@ class Privileges
|
||||
*/
|
||||
public $dbi;
|
||||
|
||||
/**
|
||||
* @var Relation $relation
|
||||
*/
|
||||
public $relation;
|
||||
|
||||
/**
|
||||
* Privileges constructor.
|
||||
*
|
||||
* @param Template $template Template instance
|
||||
* @param Template $template Template object
|
||||
* @param DatabaseInterface $dbi DatabaseInterface object
|
||||
* @param Relation $relation Relation object
|
||||
* @param RelationCleanup $relationCleanup RelationCleanup object
|
||||
*/
|
||||
public function __construct(Template $template)
|
||||
{
|
||||
public function __construct(
|
||||
Template $template,
|
||||
DatabaseInterface $dbi,
|
||||
Relation $relation,
|
||||
RelationCleanup $relationCleanup
|
||||
) {
|
||||
$this->template = $template;
|
||||
$this->dbi = $GLOBALS['dbi'];
|
||||
$relation = new Relation($this->dbi);
|
||||
$this->relationCleanup = new RelationCleanup($this->dbi, $relation);
|
||||
$this->dbi = $dbi;
|
||||
$this->relation = $relation;
|
||||
$this->relationCleanup = $relationCleanup;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -557,8 +569,7 @@ class Privileges
|
||||
*/
|
||||
public function getHtmlToChooseUserGroup($username)
|
||||
{
|
||||
$relation = new Relation($this->dbi);
|
||||
$cfgRelation = $relation->getRelationsParam();
|
||||
$cfgRelation = $this->relation->getRelationsParam();
|
||||
$groupTable = Util::backquote($cfgRelation['db'])
|
||||
. "." . Util::backquote($cfgRelation['usergroups']);
|
||||
$userTable = Util::backquote($cfgRelation['db'])
|
||||
@ -578,7 +589,7 @@ class Privileges
|
||||
|
||||
$allUserGroups = ['' => ''];
|
||||
$sql_query = "SELECT DISTINCT `usergroup` FROM " . $groupTable;
|
||||
$result = $relation->queryAsControlUser($sql_query, false);
|
||||
$result = $this->relation->queryAsControlUser($sql_query, false);
|
||||
if ($result) {
|
||||
while ($row = $this->dbi->fetchRow($result)) {
|
||||
$allUserGroups[$row[0]] = $row[0];
|
||||
@ -604,8 +615,7 @@ class Privileges
|
||||
public function setUserGroup($username, $userGroup)
|
||||
{
|
||||
$userGroup = is_null($userGroup) ? '' : $userGroup;
|
||||
$relation = new Relation($this->dbi);
|
||||
$cfgRelation = $relation->getRelationsParam();
|
||||
$cfgRelation = $this->relation->getRelationsParam();
|
||||
if (empty($cfgRelation['db']) || empty($cfgRelation['users']) || empty($cfgRelation['usergroups'])) {
|
||||
return;
|
||||
}
|
||||
@ -637,7 +647,7 @@ class Privileges
|
||||
}
|
||||
}
|
||||
if (isset($upd_query)) {
|
||||
$relation->queryAsControlUser($upd_query);
|
||||
$this->relation->queryAsControlUser($upd_query);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2957,8 +2967,7 @@ class Privileges
|
||||
*/
|
||||
public function getUserGroupCount()
|
||||
{
|
||||
$relation = new Relation($this->dbi);
|
||||
$cfgRelation = $relation->getRelationsParam();
|
||||
$cfgRelation = $this->relation->getRelationsParam();
|
||||
$user_group_table = Util::backquote($cfgRelation['db'])
|
||||
. '.' . Util::backquote($cfgRelation['usergroups']);
|
||||
$sql_query = 'SELECT COUNT(*) FROM ' . $user_group_table;
|
||||
@ -2981,8 +2990,7 @@ class Privileges
|
||||
*/
|
||||
public function getUserGroupForUser($username)
|
||||
{
|
||||
$relation = new Relation($this->dbi);
|
||||
$cfgRelation = $relation->getRelationsParam();
|
||||
$cfgRelation = $this->relation->getRelationsParam();
|
||||
|
||||
if (empty($cfgRelation['db'])
|
||||
|| empty($cfgRelation['users'])
|
||||
@ -3026,7 +3034,6 @@ class Privileges
|
||||
$hostname,
|
||||
$username
|
||||
) {
|
||||
$relation = new Relation($this->dbi);
|
||||
if (isset($GLOBALS['dbname'])) {
|
||||
//if (preg_match('/\\\\(?:_|%)/i', $dbname)) {
|
||||
if (preg_match('/(?<!\\\\)(?:_|%)/i', $GLOBALS['dbname'])) {
|
||||
@ -3080,7 +3087,7 @@ class Privileges
|
||||
|
||||
// if $cfg['Servers'][$i]['users'] and $cfg['Servers'][$i]['usergroups'] are
|
||||
// enabled
|
||||
$cfgRelation = $relation->getRelationsParam();
|
||||
$cfgRelation = $this->relation->getRelationsParam();
|
||||
if (!empty($cfgRelation['users']) && !empty($cfgRelation['usergroups'])) {
|
||||
$new_user_string .= '<td class="usrGroup"></td>';
|
||||
}
|
||||
@ -3687,14 +3694,13 @@ class Privileges
|
||||
*/
|
||||
public function getHtmlTableBodyForUserRights(array $db_rights)
|
||||
{
|
||||
$relation = new Relation($this->dbi);
|
||||
$cfgRelation = $relation->getRelationsParam();
|
||||
$cfgRelation = $this->relation->getRelationsParam();
|
||||
$user_group_count = 0;
|
||||
if ($cfgRelation['menuswork']) {
|
||||
$users_table = Util::backquote($cfgRelation['db'])
|
||||
. "." . Util::backquote($cfgRelation['users']);
|
||||
$sql_query = 'SELECT * FROM ' . $users_table;
|
||||
$result = $relation->queryAsControlUser($sql_query, false);
|
||||
$result = $this->relation->queryAsControlUser($sql_query, false);
|
||||
$group_assignment = [];
|
||||
if ($result) {
|
||||
while ($row = $this->dbi->fetchAssoc($result)) {
|
||||
|
||||
@ -9,6 +9,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace PhpMyAdmin\Twig;
|
||||
|
||||
use PhpMyAdmin\Relation;
|
||||
use PhpMyAdmin\RelationCleanup;
|
||||
use PhpMyAdmin\Server\Privileges;
|
||||
use PhpMyAdmin\Template;
|
||||
use Twig\Extension\AbstractExtension;
|
||||
@ -28,7 +30,13 @@ class ServerPrivilegesExtension extends AbstractExtension
|
||||
*/
|
||||
public function getFunctions()
|
||||
{
|
||||
$serverPrivileges = new Privileges(new Template());
|
||||
$relation = new Relation($GLOBALS['dbi']);
|
||||
$serverPrivileges = new Privileges(
|
||||
new Template(),
|
||||
$GLOBALS['dbi'],
|
||||
$relation,
|
||||
new RelationCleanup($GLOBALS['dbi'], $relation)
|
||||
);
|
||||
return [
|
||||
new TwigFunction(
|
||||
'format_privilege',
|
||||
|
||||
@ -29,11 +29,13 @@ class UserPassword
|
||||
private $serverPrivileges;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* UserPassword constructor.
|
||||
*
|
||||
* @param Privileges $serverPrivileges Privileges object
|
||||
*/
|
||||
public function __construct()
|
||||
public function __construct(Privileges $serverPrivileges)
|
||||
{
|
||||
$this->serverPrivileges = new Privileges(new Template());
|
||||
$this->serverPrivileges = $serverPrivileges;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -10,8 +10,8 @@ declare(strict_types=1);
|
||||
use PhpMyAdmin\Core;
|
||||
use PhpMyAdmin\Message;
|
||||
use PhpMyAdmin\Relation;
|
||||
use PhpMyAdmin\RelationCleanup;
|
||||
use PhpMyAdmin\Response;
|
||||
use PhpMyAdmin\Server\Common;
|
||||
use PhpMyAdmin\Server\Privileges;
|
||||
use PhpMyAdmin\Server\Users;
|
||||
use PhpMyAdmin\Template;
|
||||
@ -39,7 +39,8 @@ $scripts->addFile('server_privileges.js');
|
||||
$scripts->addFile('vendor/zxcvbn.js');
|
||||
|
||||
$template = new Template();
|
||||
$serverPrivileges = new Privileges($template);
|
||||
$relationCleanup = new RelationCleanup($GLOBALS['dbi'], $relation);
|
||||
$serverPrivileges = new Privileges($template, $GLOBALS['dbi'], $relation, $relationCleanup);
|
||||
|
||||
if ((isset($_REQUEST['viewing_mode'])
|
||||
&& $_REQUEST['viewing_mode'] == 'server')
|
||||
|
||||
@ -10,6 +10,8 @@ declare(strict_types=1);
|
||||
namespace PhpMyAdmin\Tests\Server;
|
||||
|
||||
use PhpMyAdmin\Core;
|
||||
use PhpMyAdmin\Relation;
|
||||
use PhpMyAdmin\RelationCleanup;
|
||||
use PhpMyAdmin\Server\Privileges;
|
||||
use PhpMyAdmin\Template;
|
||||
use PhpMyAdmin\Url;
|
||||
@ -82,7 +84,13 @@ class PrivilegesTest extends TestCase
|
||||
$GLOBALS['text_dir'] = "text_dir";
|
||||
$GLOBALS['is_reload_priv'] = true;
|
||||
|
||||
$this->serverPrivileges = new Privileges(new Template());
|
||||
$relation = new Relation($GLOBALS['dbi']);
|
||||
$this->serverPrivileges = new Privileges(
|
||||
new Template(),
|
||||
$GLOBALS['dbi'],
|
||||
$relation,
|
||||
new RelationCleanup($GLOBALS['dbi'], $relation)
|
||||
);
|
||||
|
||||
//$_POST
|
||||
$_POST['pred_password'] = 'none';
|
||||
@ -138,6 +146,7 @@ class PrivilegesTest extends TestCase
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
$this->serverPrivileges->dbi = $dbi;
|
||||
$this->serverPrivileges->relation->dbi = $dbi;
|
||||
$GLOBALS['is_grantuser'] = true;
|
||||
$GLOBALS['is_createuser'] = true;
|
||||
$GLOBALS['is_reload_priv'] = true;
|
||||
|
||||
@ -10,7 +10,11 @@ declare(strict_types=1);
|
||||
|
||||
use PhpMyAdmin\Display\ChangePassword;
|
||||
use PhpMyAdmin\Message;
|
||||
use PhpMyAdmin\Server\Privileges;
|
||||
use PhpMyAdmin\Relation;
|
||||
use PhpMyAdmin\RelationCleanup;
|
||||
use PhpMyAdmin\Response;
|
||||
use PhpMyAdmin\Template;
|
||||
use PhpMyAdmin\UserPassword;
|
||||
|
||||
/**
|
||||
@ -24,7 +28,11 @@ $scripts = $header->getScripts();
|
||||
$scripts->addFile('server_privileges.js');
|
||||
$scripts->addFile('vendor/zxcvbn.js');
|
||||
|
||||
$userPassword = new UserPassword();
|
||||
$template = new Template();
|
||||
$relation = new Relation($GLOBALS['dbi']);
|
||||
$relationCleanup = new RelationCleanup($GLOBALS['dbi'], $relation);
|
||||
$serverPrivileges = new Privileges($template, $GLOBALS['dbi'], $relation, $relationCleanup);
|
||||
$userPassword = new UserPassword($serverPrivileges);
|
||||
|
||||
/**
|
||||
* Displays an error message and exits if the user isn't allowed to use this
|
||||
|
||||
Loading…
Reference in New Issue
Block a user