Handle hostnames with upper-case letters
[webmin.git] / postgresql / save_user.cgi
1 #!/usr/local/bin/perl
2 # save_user.cgi
3 # Create, update or delete a postgres user
4
5 require './postgresql-lib.pl';
6 &ReadParse();
7 $access{'users'} || &error($text{'user_ecannot'});
8 &error_setup($text{'user_err'});
9
10 if ($in{'delete'}) {
11         # just delete the user
12         &execute_sql_logged($config{'basedb'}, "drop user \"$in{'user'}\"");
13         &webmin_log("delete", "user", $in{'user'});
14         }
15 else {
16         # parse inputs
17         $version = &get_postgresql_version();
18         if ($in{'ppass_def'} == 0) {
19                 $in{'ppass'} =~ /^\S+$/ || &error($text{'user_epass'});
20                 $sql .= $version >= 7 ? " with password '$in{'ppass'}'"
21                                       : " with password $in{'ppass'}";
22                 }
23         elsif ($in{'pass_def'} == 1) {
24                 $sql .= " with password ''";
25                 }
26         if ($in{'db'}) {
27                 $sql .= " createdb";
28                 }
29         else {
30                 $sql .= " nocreatedb";
31                 }
32         if ($in{'other'}) {
33                 $sql .= " createuser";
34                 }
35         else {
36                 $sql .= " nocreateuser";
37                 }
38         if (!$in{'until_def'}) {
39                 $sql .= " valid until '$in{'until'}'";
40                 }
41         if ($in{'new'}) {
42                 $in{'pname'} =~ /^\S+$/ || &error($text{'user_ename'});
43                 &execute_sql_logged($config{'basedb'},
44                                     "create user \"$in{'pname'}\" $sql");
45                 &webmin_log("create", "user", $in{'pname'});
46                 }
47         else {
48                 &execute_sql_logged($config{'basedb'},
49                                     "alter user \"$in{'user'}\" $sql");
50                 if (&get_postgresql_version() >= 7.4 &&
51                     $in{'pname'} ne $in{'user'}) {
52                         # Rename too
53                         &execute_sql_logged($config{'basedb'},
54                                 "alter user \"$in{'user'}\" ".
55                                 "rename to \"$in{'pname'}\"");
56                         }
57                 &webmin_log("modify", "user", $in{'user'});
58                 }
59         }
60 &redirect("list_users.cgi");
61