diff --git a/examples/create_tables.sql b/examples/create_tables.sql index ca23e71c06..0ac5654dc4 100644 --- a/examples/create_tables.sql +++ b/examples/create_tables.sql @@ -262,43 +262,9 @@ CREATE TABLE IF NOT EXISTS `pma__users` ( CREATE TABLE IF NOT EXISTS `pma__usergroups` ( `usergroup` varchar(64) NOT NULL, - `server_databases` enum('Y','N') NOT NULL DEFAULT 'N', - `server_sql` enum('Y','N') NOT NULL DEFAULT 'N', - `server_status` enum('Y','N') NOT NULL DEFAULT 'N', - `server_rights` enum('Y','N') NOT NULL DEFAULT 'N', - `server_export` enum('Y','N') NOT NULL DEFAULT 'N', - `server_import` enum('Y','N') NOT NULL DEFAULT 'N', - `server_settings` enum('Y','N') NOT NULL DEFAULT 'N', - `server_binlog` enum('Y','N') NOT NULL DEFAULT 'N', - `server_replication` enum('Y','N') NOT NULL DEFAULT 'N', - `server_vars` enum('Y','N') NOT NULL DEFAULT 'N', - `server_charset` enum('Y','N') NOT NULL DEFAULT 'N', - `server_plugins` enum('Y','N') NOT NULL DEFAULT 'N', - `server_engine` enum('Y','N') NOT NULL DEFAULT 'N', - `db_structure` enum('Y','N') NOT NULL DEFAULT 'N', - `db_sql` enum('Y','N') NOT NULL DEFAULT 'N', - `db_search` enum('Y','N') NOT NULL DEFAULT 'N', - `db_qbe` enum('Y','N') NOT NULL DEFAULT 'N', - `db_export` enum('Y','N') NOT NULL DEFAULT 'N', - `db_import` enum('Y','N') NOT NULL DEFAULT 'N', - `db_operation` enum('Y','N') NOT NULL DEFAULT 'N', - `db_privileges` enum('Y','N') NOT NULL DEFAULT 'N', - `db_routines` enum('Y','N') NOT NULL DEFAULT 'N', - `db_events` enum('Y','N') NOT NULL DEFAULT 'N', - `db_triggers` enum('Y','N') NOT NULL DEFAULT 'N', - `db_tracking` enum('Y','N') NOT NULL DEFAULT 'N', - `db_designer` enum('Y','N') NOT NULL DEFAULT 'N', - `table_browse` enum('Y','N') NOT NULL DEFAULT 'N', - `table_structure` enum('Y','N') NOT NULL DEFAULT 'N', - `table_sql` enum('Y','N') NOT NULL DEFAULT 'N', - `table_search` enum('Y','N') NOT NULL DEFAULT 'N', - `table_insert` enum('Y','N') NOT NULL DEFAULT 'N', - `table_export` enum('Y','N') NOT NULL DEFAULT 'N', - `table_import` enum('Y','N') NOT NULL DEFAULT 'N', - `table_operation` enum('Y','N') NOT NULL DEFAULT 'N', - `table_tracking` enum('Y','N') NOT NULL DEFAULT 'N', - `table_triggers` enum('Y','N') NOT NULL DEFAULT 'N', - PRIMARY KEY (`usergroup`) + `tab` varchar(64) NOT NULL, + `allowed` enum('Y','N') NOT NULL DEFAULT 'N', + PRIMARY KEY (`usergroup`,`tab`,`allowed`) ) COMMENT='User groups with configured menu items' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; diff --git a/examples/create_tables_drizzle.sql b/examples/create_tables_drizzle.sql index 4bbb9c34d5..698a15949d 100644 --- a/examples/create_tables_drizzle.sql +++ b/examples/create_tables_drizzle.sql @@ -248,43 +248,9 @@ CREATE TABLE IF NOT EXISTS `pma__users` ( CREATE TABLE IF NOT EXISTS `pma__usergroups` ( `usergroup` varchar(64) NOT NULL, - `server_databases` enum('Y','N') NOT NULL DEFAULT 'N', - `server_sql` enum('Y','N') NOT NULL DEFAULT 'N', - `server_status` enum('Y','N') NOT NULL DEFAULT 'N', - `server_rights` enum('Y','N') NOT NULL DEFAULT 'N', - `server_export` enum('Y','N') NOT NULL DEFAULT 'N', - `server_import` enum('Y','N') NOT NULL DEFAULT 'N', - `server_settings` enum('Y','N') NOT NULL DEFAULT 'N', - `server_binlog` enum('Y','N') NOT NULL DEFAULT 'N', - `server_replication` enum('Y','N') NOT NULL DEFAULT 'N', - `server_vars` enum('Y','N') NOT NULL DEFAULT 'N', - `server_charset` enum('Y','N') NOT NULL DEFAULT 'N', - `server_plugins` enum('Y','N') NOT NULL DEFAULT 'N', - `server_engine` enum('Y','N') NOT NULL DEFAULT 'N', - `db_structure` enum('Y','N') NOT NULL DEFAULT 'N', - `db_sql` enum('Y','N') NOT NULL DEFAULT 'N', - `db_search` enum('Y','N') NOT NULL DEFAULT 'N', - `db_qbe` enum('Y','N') NOT NULL DEFAULT 'N', - `db_export` enum('Y','N') NOT NULL DEFAULT 'N', - `db_import` enum('Y','N') NOT NULL DEFAULT 'N', - `db_operation` enum('Y','N') NOT NULL DEFAULT 'N', - `db_privileges` enum('Y','N') NOT NULL DEFAULT 'N', - `db_routines` enum('Y','N') NOT NULL DEFAULT 'N', - `db_events` enum('Y','N') NOT NULL DEFAULT 'N', - `db_triggers` enum('Y','N') NOT NULL DEFAULT 'N', - `db_tracking` enum('Y','N') NOT NULL DEFAULT 'N', - `db_designer` enum('Y','N') NOT NULL DEFAULT 'N', - `table_browse` enum('Y','N') NOT NULL DEFAULT 'N', - `table_structure` enum('Y','N') NOT NULL DEFAULT 'N', - `table_sql` enum('Y','N') NOT NULL DEFAULT 'N', - `table_search` enum('Y','N') NOT NULL DEFAULT 'N', - `table_insert` enum('Y','N') NOT NULL DEFAULT 'N', - `table_export` enum('Y','N') NOT NULL DEFAULT 'N', - `table_import` enum('Y','N') NOT NULL DEFAULT 'N', - `table_operation` enum('Y','N') NOT NULL DEFAULT 'N', - `table_tracking` enum('Y','N') NOT NULL DEFAULT 'N', - `table_triggers` enum('Y','N') NOT NULL DEFAULT 'N', - PRIMARY KEY (`usergroup`) + `tab` varchar(64) NOT NULL, + `allowed` enum('Y','N') NOT NULL DEFAULT 'N', + PRIMARY KEY (`usergroup`,`tab`,`allowed`) ) COMMENT='User groups with configured menu items' COLLATE utf8_bin; diff --git a/libraries/Menu.class.php b/libraries/Menu.class.php index 4c4ee18ebf..3894b557ab 100644 --- a/libraries/Menu.class.php +++ b/libraries/Menu.class.php @@ -140,19 +140,16 @@ class PMA_Menu $userTable = PMA_Util::backquote($GLOBALS['cfg']['Server']['pmadb']) . "." . PMA_Util::backquote($GLOBALS['cfg']['Server']['users']); - $sql_query = "SELECT * FROM " . $groupTable - . " WHERE `usergroup` = (SELECT usergroup FROM " + $sql_query = "SELECT `tab` FROM " . $groupTable + . " WHERE `allowed` = 'N' AND `usergroup` = (SELECT usergroup FROM " . $userTable . " WHERE `username` = '" . PMA_Util::sqlAddSlashes($GLOBALS['cfg']['Server']['user']) . "')"; $result = PMA_queryAsControlUser($sql_query, false); if ($result) { - $row = $GLOBALS['dbi']->fetchAssoc($result); - foreach ($allowedTabs as $key => $tab) { - $colName = $level . '_' . $key; - if (isset($row[$colName]) && $row[$colName] == 'N') { - unset($allowedTabs[$key]); - } + while ($row = $GLOBALS['dbi']->fetchAssoc($result)) { + $tabName = substr($row['tab'], strpos($row['tab'], '_') + 1); + unset($allowedTabs[$tabName]); } } } diff --git a/libraries/server_privileges.lib.php b/libraries/server_privileges.lib.php index 18483b8dcd..66e3595285 100644 --- a/libraries/server_privileges.lib.php +++ b/libraries/server_privileges.lib.php @@ -500,7 +500,7 @@ function PMA_getHtmlToChooseUserGroup($username) . "." . PMA_Util::backquote($GLOBALS['cfg']['Server']['users']); $userGroups = array(); - $sql_query = "SELECT `usergroup` FROM " . $groupTable; + $sql_query = "SELECT DISTINCT `usergroup` FROM " . $groupTable; $result = PMA_queryAsControlUser($sql_query, false); if ($result) { while ($row = $GLOBALS['dbi']->fetchRow($result)) { @@ -1929,7 +1929,7 @@ function PMA_getHtmlForSpecificTablePrivileges($db, $table) list($list_of_privileges, $list_of_compared_privileges) = PMA_getListOfPrivilegesAndComparedPrivileges(); - $sql_query + $sql_query = "(" . " SELECT " . $list_of_privileges . ", '*' AS `Db`, 'g' AS `Type`" . " FROM `mysql`.`user`" @@ -3801,342 +3801,6 @@ function PMA_getHtmlForDisplayUserOverviewPage($pmaThemeImage, $text_dir) return $html_output; } -/** - * Return HTML to list the users belonging to a given user group - * - * @param string $userGroup user group name - * - * @return HTML to list the users belonging to a given user group - */ -function PMA_getHtmlForListingUsersofAGroup($userGroup) -{ - $html_output = '
' - . __('No users were found belonging to this user group.') - . '
'; - } else { - $html_output .= '| # | ' . __('User') . ' |
|---|---|
| ' . $i . ' | ' - . '' . htmlspecialchars($row[0]) . ' | ' - . '