#!/usr/local/bin/perl # list_grants.cgi # Display all granted privileges require './postgresql-lib.pl'; $access{'users'} || &error($text{'grant_ecannot'}); &ui_print_header(undef, $text{'grant_title'}, "", "list_grants"); &ReadParse(); # Check for down databases @str = &table_structure($config{'basedb'}, "pg_catalog.pg_database"); foreach $f (@str) { $hasconn++ if ($f->{'field'} eq 'datallowconn'); } if ($hasconn) { $rv = &execute_sql_safe($config{'basedb'}, "select datname,datallowconn from pg_database"); foreach $r (@{$rv->{'data'}}) { $dbup{$r->[0]} = ($r->[1] =~ /^(t|1)/i); } } # Build a list of tables @dblist = &list_databases(); foreach $d (@dblist) { next if (!$dbup{$d} && $hasconn); if (&supports_schemas($d)) { $s = &execute_sql_safe($d, "select relname,relacl,pg_namespace.nspname,reltype,relkind,relhasrules,\'$d\' from pg_class, pg_namespace where relnamespace = pg_namespace.oid and (relkind = \'r\' OR relkind = \'S\') and relname !~ \'^pg_\' order by relname"); } else { $s = &execute_sql_safe($d, "select relname,relacl,\'public\',reltype,relkind,relhasrules,\'$d\' from pg_class where (relkind = \'r\' OR relkind = \'S\') and relname !~ \'^pg_\' order by relname"); } push(@tables, @{$s->{'data'}}); } if ($in{'search'}) { # Limit to those matching search @tables = grep { $_->[0] =~ /\Q$in{'search'}\E/i || $_->[6] =~ /\Q$in{'search'}\E/i } @tables; print "
",&text('grant_showing', "$in{'search'}")," | \n"; print "", "$text{'view_searchreset'} | \n"; print "
\n"; } &ui_print_footer("", $text{'index_return'});