Confirm before deleting permissions
authorJamie Cameron <jcameron@webmin.com>
Fri, 12 Aug 2011 21:22:29 +0000 (14:22 -0700)
committerJamie Cameron <jcameron@webmin.com>
Fri, 12 Aug 2011 21:22:29 +0000 (14:22 -0700)
mysql/CHANGELOG
mysql/delete_cprivs.cgi
mysql/delete_dbs.cgi
mysql/delete_hosts.cgi
mysql/delete_tprivs.cgi
mysql/delete_users.cgi
mysql/lang/en

index b6da840..e4b0b2e 100644 (file)
@@ -95,3 +95,5 @@ The default MySQL table type can now be set on the MySQL Server Configuration pa
 ---- Changes since 1.510 ----
 Added greater than / less than selectors to the table data search form.
 The SSL / X509 authentication type for a user can be set on the Edit User page.
+---- Changes since 1.560 ----
+Added confirmation before deleting multiple user, host, database, table and column permissions.
index e716140..0ad2c60 100755 (executable)
@@ -8,21 +8,36 @@ $access{'perms'} || &error($text{'perms_edb'});
 @d = split(/\0/, $in{'d'});
 @d || &error($text{'cprivs_enone'});
 
-# Delete the table privs
-foreach $hdutc (@d) {
-       ($host, $db, $user, $table, $column) = split(/ /, $hdutc);
-       $access{'perms'} == 1 || &can_edit_db($db) ||
-               &error($text{'perms_edb'});
-       &execute_sql_logged($master_db,
-                    "delete from columns_priv where host = '$host' ".
-                    "and db = '$db' ".
-                    "and user = '$user' ".
-                    "and table_name = '$table' ".
-                    "and column_name = '$column'");
+if (!$in{'confirm'}) {
+       # Ask first
+       &ui_print_header(undef, $text{'cprivs_dtitle'}, "");
+
+       print &ui_confirmation_form("delete_cprivs.cgi",
+               &text('cprivs_drusure', scalar(@d)),
+               [ map { [ "d", $_ ] } @d ],
+               [ [ "confirm", $text{'cprivs_dok'} ] ],
+               );
+
+       &ui_print_footer('list_cprivs.cgi', $text{'cprivs_return'},
+                        "", $text{'index_return'});
        }
-&execute_sql_logged($master_db, 'flush privileges');
+else {
+       # Delete the column privs
+       foreach $hdutc (@d) {
+               ($host, $db, $user, $table, $column) = split(/ /, $hdutc);
+               $access{'perms'} == 1 || &can_edit_db($db) ||
+                       &error($text{'perms_edb'});
+               &execute_sql_logged($master_db,
+                            "delete from columns_priv where host = '$host' ".
+                            "and db = '$db' ".
+                            "and user = '$user' ".
+                            "and table_name = '$table' ".
+                            "and column_name = '$column'");
+               }
+       &execute_sql_logged($master_db, 'flush privileges');
 
-# Log it
-&webmin_log("delete", "cprivs", scalar(@d));
-&redirect("list_cprivs.cgi");
+       # Log it
+       &webmin_log("delete", "cprivs", scalar(@d));
+       &redirect("list_cprivs.cgi");
+       }
 
index 84eca70..299c677 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/local/bin/perl
-# Delete several selected users
+# Delete several selected database permissions
 
 require './mysql-lib.pl';
 &ReadParse();
@@ -8,19 +8,34 @@ $access{'perms'} || &error($text{'perms_ecannot'});
 @d = split(/\0/, $in{'d'});
 @d || &error($trext{'dbs_enone'});
 
-# Delete the users
-foreach $hdu (@d) {
-       ($host, $db, $user) = split(/ /, $hdu);
-       $access{'perms'} == 1 || &can_edit_db($db) ||
-               &error($text{'perms_edb'});
-       &execute_sql_logged($master_db,
-                    "delete from db where user = '$user' ".
-                    "and host = '$host' ".
-                    "and db = '$db'");
+if (!$in{'confirm'}) {
+       # Ask first
+       &ui_print_header(undef, $text{'dbs_dtitle'}, "");
+
+       print &ui_confirmation_form("delete_dbs.cgi",
+               &text('dbs_drusure', scalar(@d)),
+               [ map { [ "d", $_ ] } @d ],
+               [ [ "confirm", $text{'dbs_dok'} ] ],
+               );
+
+       &ui_print_footer('list_dbs.cgi', $text{'dbs_return'},
+                        "", $text{'index_return'});
        }
-&execute_sql_logged($master_db, 'flush privileges');
+else {
+       # Delete the database permissions
+       foreach $hdu (@d) {
+               ($host, $db, $user) = split(/ /, $hdu);
+               $access{'perms'} == 1 || &can_edit_db($db) ||
+                       &error($text{'perms_edb'});
+               &execute_sql_logged($master_db,
+                            "delete from db where user = '$user' ".
+                            "and host = '$host' ".
+                            "and db = '$db'");
+               }
+       &execute_sql_logged($master_db, 'flush privileges');
 
-# Log it
-&webmin_log("delete", "dbprivs", scalar(@d));
-&redirect("list_dbs.cgi");
+       # Log it
+       &webmin_log("delete", "dbprivs", scalar(@d));
+       &redirect("list_dbs.cgi");
+       }
 
index d309f8d..0a5092e 100755 (executable)
@@ -8,18 +8,33 @@ $access{'perms'} || &error($text{'perms_edb'});
 @d = split(/\0/, $in{'d'});
 @d || &error($trext{'hosts_enone'});
 
-# Delete the users
-foreach $hdu (@d) {
-       ($host, $db) = split(/ /, $hdu);
-       $access{'perms'} == 1 || &can_edit_db($db) ||
-               &error($text{'perms_edb'});
-       &execute_sql_logged($master_db,
-                    "delete from host where host = '$host' ".
-                    "and db = '$db'");
+if (!$in{'confirm'}) {
+       # Ask first
+       &ui_print_header(undef, $text{'hosts_dtitle'}, "");
+
+       print &ui_confirmation_form("delete_hosts.cgi",
+               &text('hosts_drusure', scalar(@d)),
+               [ map { [ "d", $_ ] } @d ],
+               [ [ "confirm", $text{'hosts_dok'} ] ],
+               );
+
+       &ui_print_footer('list_hosts.cgi', $text{'hosts_return'},
+                        "", $text{'index_return'});
        }
-&execute_sql_logged($master_db, 'flush privileges');
+else {
+       # Delete the users
+       foreach $hdu (@d) {
+               ($host, $db) = split(/ /, $hdu);
+               $access{'perms'} == 1 || &can_edit_db($db) ||
+                       &error($text{'perms_edb'});
+               &execute_sql_logged($master_db,
+                            "delete from host where host = '$host' ".
+                            "and db = '$db'");
+               }
+       &execute_sql_logged($master_db, 'flush privileges');
 
-# Log it
-&webmin_log("delete", "hosts", scalar(@d));
-&redirect("list_hosts.cgi");
+       # Log it
+       &webmin_log("delete", "hosts", scalar(@d));
+       &redirect("list_hosts.cgi");
+       }
 
index bd03560..e1cdcbf 100755 (executable)
@@ -8,20 +8,35 @@ $access{'perms'} || &error($text{'perms_edb'});
 @d = split(/\0/, $in{'d'});
 @d || &error($trext{'tprivs_enone'});
 
-# Delete the table privs
-foreach $hdut (@d) {
-       ($host, $db, $user, $table) = split(/ /, $hdut);
-       $access{'perms'} == 1 || &can_edit_db($db) ||
-               &error($text{'perms_edb'});
-       &execute_sql_logged($master_db,
-                    "delete from tables_priv where host = '$host' ".
-                    "and db = '$db' ".
-                    "and user = '$user' ".
-                    "and table_name = '$table'");
+if (!$in{'confirm'}) {
+       # Ask first
+       &ui_print_header(undef, $text{'tprivs_dtitle'}, "");
+
+       print &ui_confirmation_form("delete_tprivs.cgi",
+               &text('tprivs_drusure', scalar(@d)),
+               [ map { [ "d", $_ ] } @d ],
+               [ [ "confirm", $text{'tprivs_dok'} ] ],
+               );
+
+       &ui_print_footer('list_tprivs.cgi', $text{'tprivs_return'},
+                        "", $text{'index_return'});
        }
-&execute_sql_logged($master_db, 'flush privileges');
+else {
+       # Delete the table privs
+       foreach $hdut (@d) {
+               ($host, $db, $user, $table) = split(/ /, $hdut);
+               $access{'perms'} == 1 || &can_edit_db($db) ||
+                       &error($text{'perms_edb'});
+               &execute_sql_logged($master_db,
+                            "delete from tables_priv where host = '$host' ".
+                            "and db = '$db' ".
+                            "and user = '$user' ".
+                            "and table_name = '$table'");
+               }
+       &execute_sql_logged($master_db, 'flush privileges');
 
-# Log it
-&webmin_log("delete", "tprivs", scalar(@d));
-&redirect("list_tprivs.cgi");
+       # Log it
+       &webmin_log("delete", "tprivs", scalar(@d));
+       &redirect("list_tprivs.cgi");
+       }
 
index 9a9acab..ec40ac5 100755 (executable)
@@ -8,16 +8,31 @@ $access{'perms'} == 1 || &error($text{'perms_ecannot'});
 @d = split(/\0/, $in{'d'});
 @d || &error($trext{'users_enone'});
 
-# Delete the users
-foreach $hu (@d) {
-       ($host, $user) = split(/ /, $hu);
-       &execute_sql_logged($master_db,
-                    "delete from user where user = '$user' ".
-                    "and host = '$host'");
+if (!$in{'confirm'}) {
+       # Ask first
+       &ui_print_header(undef, $text{'users_dtitle'}, "");
+
+       print &ui_confirmation_form("delete_users.cgi",
+               &text('users_drusure', scalar(@d)),
+               [ map { [ "d", $_ ] } @d ],
+               [ [ "confirm", $text{'users_dok'} ] ],
+               );
+
+       &ui_print_footer('list_users.cgi', $text{'users_return'},
+                        "", $text{'index_return'});
        }
-&execute_sql_logged($master_db, 'flush privileges');
+else {
+       # Delete the users
+       foreach $hu (@d) {
+               ($host, $user) = split(/ /, $hu);
+               &execute_sql_logged($master_db,
+                            "delete from user where user = '$user' ".
+                            "and host = '$host'");
+               }
+       &execute_sql_logged($master_db, 'flush privileges');
 
-# Log it
-&webmin_log("delete", "users", scalar(@d));
-&redirect("list_users.cgi");
+       # Log it
+       &webmin_log("delete", "users", scalar(@d));
+       &redirect("list_users.cgi");
+       }
 
index ee8441e..80dba18 100644 (file)
@@ -262,6 +262,9 @@ users_delete=Delete Selected
 users_derr=Failed to delete users
 users_enone=No users selected
 users_ssl=Certificate
+users_dtitle=Delete User Permissions
+users_drusure=Are you sure you want to delete the $1 selected MySQL user permissions?
+users_dok=Delete Users
 
 user_title1=Create User
 user_title2=Edit User
@@ -343,6 +346,9 @@ dbs_none=None
 dbs_return=database permissions
 dbs_derr=Failed to delete database permissions
 dbs_enone=No databases selected
+dbs_dtitle=Delete Database Permissions
+dbs_drusure=Are you sure you want to delete the $1 selected MySQL database permissions?
+dbs_dok=Delete Permissions
 
 db_title1=Create Database Permissions
 db_title2=Edit Database Permissions
@@ -404,6 +410,9 @@ hosts_add=Create new host permissions.
 hosts_empty=No host permissions defined
 hosts_derr=Failed to delete host permissions
 hosts_enone=No hosts selected
+hosts_dtitle=Delete Host Permissions
+hosts_drusure=Are you sure you want to delete the $1 selected MySQL host permissions?
+hosts_dok=Delete Permissions
 
 host_title1=Create Host Permissions
 host_title2=Edit Host Permissions
@@ -497,6 +506,9 @@ tprivs_return=table permissions
 tprivs_none=None
 tprivs_derr=Failed to delete table permissions
 tprivs_enone=No tables selected
+tprivs_dtitle=Delete Table Permissions
+tprivs_drusure=Are you sure you want to delete the $1 selected MySQL table permissions?
+tprivs_dok=Delete Permissions
 
 tpriv_title1=Create Table Permissions
 tpriv_title2=Edit Table Permissions
@@ -531,6 +543,9 @@ cprivs_return=field permissions
 cprivs_none=None
 cprivs_derr=Failed to delete field permissions
 cprivs_enone=No fields selected
+cprivs_dtitle=Delete Column Permissions
+cprivs_drusure=Are you sure you want to delete the $1 selected MySQL column permissions?
+cprivs_dok=Delete Permissions
 
 cpriv_title1=Create Field Permissions
 cpriv_title2=Edit Field Permissions