Use pg_users instead of pg_shadow in latest PostgreSQL versions https://sourceforge.net/p/webadmin/bugs/4727/

This commit is contained in:
Jamie Cameron
2016-03-27 16:26:19 -07:00
parent 46d7022cc9
commit 40a90f7c71
6 changed files with 24 additions and 6 deletions

View File

@@ -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]);

View File

@@ -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]};
}

View File

@@ -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),

View File

@@ -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;

View File

@@ -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];
}

View File

@@ -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'}) {