mirror of
https://github.com/webmin/webmin.git
synced 2026-02-03 06:03:28 +00:00
Use pg_users instead of pg_shadow in latest PostgreSQL versions https://sourceforge.net/p/webadmin/bugs/4727/
This commit is contained in:
@@ -39,7 +39,8 @@ else {
|
||||
}
|
||||
|
||||
# Group members
|
||||
$s = &execute_sql($config{'basedb'}, "select $pg_shadow_cols from pg_shadow");
|
||||
($pg_table, $pg_cols) = &get_pg_shadow_table();
|
||||
$s = &execute_sql($config{'basedb'}, "select $pg_cols from $pg_table");
|
||||
%uidtouser = map { $_->[1], $_->[0] } @{$s->{'data'}};
|
||||
if (!$in{'new'}) {
|
||||
@mems = map { [ $_, $uidtouser{$_} || $_ ] } &split_array($group[2]);
|
||||
|
||||
@@ -10,8 +10,9 @@ if ($in{'new'}) {
|
||||
}
|
||||
else {
|
||||
&ui_print_header(undef, $text{'user_edit'}, "");
|
||||
($pg_table, $pg_cols) = &get_pg_shadow_table();
|
||||
$s = &execute_sql_safe($config{'basedb'},
|
||||
"select $pg_shadow_cols from pg_shadow ".
|
||||
"select $pg_cols from $pg_table ".
|
||||
"where usename = '$in{'user'}'");
|
||||
@user = @{$s->{'data'}->[0]};
|
||||
}
|
||||
|
||||
@@ -6,7 +6,8 @@ require './postgresql-lib.pl';
|
||||
$access{'users'} || &error($text{'user_ecannot'});
|
||||
&ui_print_header(undef, $text{'user_title'}, "", "list_users");
|
||||
|
||||
$s = &execute_sql_safe($config{'basedb'}, "select $pg_shadow_cols from pg_shadow");
|
||||
($pg_table, $pg_cols) = &get_pg_shadow_table();
|
||||
$s = &execute_sql_safe($config{'basedb'}, "select $pg_cols from $pg_table");
|
||||
print &ui_form_start("delete_users.cgi", "post");
|
||||
@rowlinks = ( &select_all_link("d", 0),
|
||||
&select_invert_link("d", 0),
|
||||
|
||||
@@ -1273,5 +1273,17 @@ if ($job) {
|
||||
}
|
||||
}
|
||||
|
||||
# get_pg_shadow_table()
|
||||
# Returns the table containing users, and the list of columns (comma-separated)
|
||||
sub get_pg_shadow_table
|
||||
{
|
||||
if (&get_postgresql_version() >= 9.4) {
|
||||
return ("pg_user", $pg_shadow_cols);
|
||||
}
|
||||
else {
|
||||
return ("pg_shadow", $pg_shadow_cols);
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
@@ -32,7 +32,8 @@ else {
|
||||
# Actually create or update the group
|
||||
if (&get_postgresql_version() >= 8.0) {
|
||||
# Need to use new create group or modify command
|
||||
$s = &execute_sql($config{'basedb'}, "select $pg_shadow_cols from pg_shadow");
|
||||
($pg_table, $pg_cols) = &get_pg_shadow_table();
|
||||
$s = &execute_sql($config{'basedb'}, "select $pg_cols from $pg_table");
|
||||
foreach $u (@{$s->{'data'}}) {
|
||||
$umap{$u->[1]} = $u->[0];
|
||||
}
|
||||
|
||||
@@ -23,8 +23,9 @@ if ($config{'sync_create'}) {
|
||||
sub useradmin_delete_user
|
||||
{
|
||||
if ($config{'sync_delete'}) {
|
||||
my ($pg_table, $pg_cols) = &get_pg_shadow_table();
|
||||
local $s = &execute_sql($config{'basedb'},
|
||||
"select $pg_shadow_cols from pg_shadow where usename = '$_[0]->{'user'}'");
|
||||
"select $pg_cols from $pg_table where usename = '$_[0]->{'user'}'");
|
||||
return if (!@{$s->{'data'}});
|
||||
&execute_sql_logged($config{'basedb'}, "drop user \"$_[0]->{'user'}\"");
|
||||
}
|
||||
@@ -35,8 +36,9 @@ if ($config{'sync_delete'}) {
|
||||
sub useradmin_modify_user
|
||||
{
|
||||
if ($config{'sync_modify'}) {
|
||||
my ($pg_table, $pg_cols) = &get_pg_shadow_table();
|
||||
local $s = &execute_sql($config{'basedb'},
|
||||
"select $pg_shadow_cols from pg_shadow where usename = '$_[0]->{'olduser'}'");
|
||||
"select $pg_cols from $pg_table where usename = '$_[0]->{'olduser'}'");
|
||||
return if (!@{$s->{'data'}});
|
||||
local $version = &get_postgresql_version();
|
||||
if ($_[0]->{'user'} ne $_[0]->{'olduser'}) {
|
||||
|
||||
Reference in New Issue
Block a user