Fields for editing per-user connection limits
[webmin.git] / mysql / edit_user.cgi
1 #!/usr/local/bin/perl
2 # edit_user.cgi
3 # Display a form for editing or creating a MySQL user
4
5 require './mysql-lib.pl';
6 &ReadParse();
7 $access{'perms'} == 1 || &error($text{'perms_ecannot'});
8
9 if ($in{'new'}) {
10         &ui_print_header(undef, $text{'user_title1'}, "", "create_user");
11         }
12 else {
13         &ui_print_header(undef, $text{'user_title2'}, "", "edit_user");
14         if ($in{'user'}) {
15                 $d = &execute_sql_safe($master_db,
16                                        "select * from user where user = ?",
17                                        $in{'user'});
18                 $u = $d->{'data'}->[0];
19                 }
20         else {
21                 $d = &execute_sql_safe($master_db,
22                                        "select * from user order by user");
23                 $u = $d->{'data'}->[$in{'idx'}];
24                 }
25         }
26
27 # Form header
28 print &ui_form_start("save_user.cgi", "post");
29 if ($in{'new'}) {
30         print &ui_hidden("new", 1);
31         }
32 else {
33         print &ui_hidden("olduser", $u->[1]);
34         print &ui_hidden("oldhost", $u->[0]);
35         }
36 print &ui_table_start($text{'user_header'}, undef, 2);
37 %sizes = &table_field_sizes($master_db, "user");
38 %fieldmap = map { $_->{'field'}, $_->{'index'} }
39                 &table_structure($master_db, "user");
40
41 # Username field
42 print &ui_table_row($text{'user_user'},
43         &ui_opt_textbox("mysqluser", $u->[1], $sizes{'user'},
44                         $text{'user_all'}));
45
46 # Password field
47 print &ui_table_row($text{'user_pass'},
48         &ui_radio("mysqlpass_mode", $in{'new'} ? 0 : $u->[2] ? 1 : 2,
49                   [ [ 2, $text{'user_none'} ],
50                     $in{'new'} ? ( ) : ( [ 1, $text{'user_leave'} ] ),
51                     [ 0, $text{'user_set'} ] ])." ".
52         &ui_password("mysqlpass", undef, 20));
53
54 # Allowed host / network
55 print &ui_table_row($text{'user_host'},
56         &ui_opt_textbox("host", $u->[0] eq '%' ? '' : $u->[0], 40,
57                         $text{'user_any'}));
58
59 # User's permissions
60 for($i=3; $i<=&user_priv_cols()+3-1; $i++) {
61         push(@opts, [ $i, $text{"user_priv$i"} ]);
62         push(@sel, $i) if ($u->[$i] eq 'Y');
63         }
64 print &ui_table_row($text{'user_perms'},
65         &ui_select("perms", \@sel, \@opts, 10, 1, 1));
66
67 # Various per-user limits
68 foreach $f ('max_user_connections', 'max_connections',
69             'max_questions', 'max_updates') {
70         if ($mysql_version >= 5 && $fieldmap{$f}) {
71                 print &ui_table_row($text{'user_'.$f},
72                         &ui_opt_textbox($f,
73                                 $u->[$fieldmap{$f}] || undef,
74                                 5, $text{'user_maxunlimited'},
75                                 $text{'user_maxatmost'}));
76                 }
77         }
78
79 # SSL needed?
80 if ($mysql_version >= 5 && $fieldmap{'ssl_type'}) {
81         print &ui_table_row($text{'user_ssl'},
82                 &ui_select("ssl_type", uc($u->[$fieldmap{'ssl_type'}]),
83                         [ [ '', $text{'user_ssl_'} ],
84                           [ 'ANY', $text{'user_ssl_any'} ],
85                           [ 'X509', $text{'user_ssl_x509'} ] ],
86                         1, 0, 1));
87         }
88
89 print &ui_table_end();
90 print &ui_form_end([ $in{'new'} ? ( [ undef, $text{'create'} ] )
91                                 : ( [ undef, $text{'save'} ],
92                                     [ 'delete', $text{'delete'} ] ) ]);
93
94 &ui_print_footer('list_users.cgi', $text{'users_return'},
95         "", $text{'index_return'});
96