Handle hostnames with upper-case letters
[webmin.git] / useradmin / delete_group.cgi
1 #!/usr/local/bin/perl
2 # delete_group.cgi
3 # Delete a group, after asking for confirmation
4
5 require './user-lib.pl';
6 &ReadParse();
7 @glist = &list_groups();
8 ($group) = grep { $_->{'group'} eq $in{'group'} } @glist;
9 $group || &error($text{'gedit_egone'});
10 $| = 1;
11 &error_setup($text{'gdel_err'});
12 &can_edit_group(\%access, $group) || &error($text{'gdel_egroup'});
13 $access{'gdelete'} || &error($text{'gdel_egroup'});
14
15 &ui_print_header(undef, $text{'gdel_title'}, "");
16
17 if (!$config{'delete_root'} && $group->{'gid'} <= 10) {
18         print "<b>$text{'gdel_eroot'}</b> <p>\n";
19         &ui_print_footer("", $text{'index_return'});
20         exit;
21         }
22
23 if ($in{'confirmed'}) {
24         # Check for repeat click
25         if ($group->{'group'} ne $in{'group'} || $in{'group'} eq '') {
26                 print "<b>$text{'gdel_ealready'}</b> <p>\n";
27                 &ui_print_footer("", $text{'index_return'});
28                 exit;
29                 }
30
31         # Delete from other modules
32         if ($in{'others'}) {
33                 print "$text{'gdel_other'}<br>\n";
34                 local $error_must_die = 1;
35                 eval { &other_modules("useradmin_delete_group", $group); };
36                 if ($@) {
37                         print &text('udel_failed', $@),"<p>\n";
38                         }
39                 else {
40                         print "$text{'gdel_done'}<p>\n";
41                         }
42                 }
43
44         # Delete from group file
45         &lock_user_files();
46         print "$text{'gdel_group'}<br>\n";
47         &set_group_envs($group, 'DELETE_GROUP');
48         $merr = &making_changes();
49         &error(&text('usave_emaking', "<tt>$merr</tt>")) if (defined($merr));
50
51         &delete_group($group);
52         &unlock_user_files();
53         &made_changes();
54         &webmin_log("delete", "group", $group->{'group'}, $group);
55         print "$text{'gdel_done'}<p>\n";
56
57 done:
58         &ui_print_footer("index.cgi?mode=groups", $text{'index_return'});
59         }
60 else {
61         # check if this is anyone's primary group
62         foreach $u (&list_users()) {
63                 if ($u->{'gid'} == $group->{'gid'}) {
64                         print "<b>",&text('gdel_eprimary', $u->{'user'}),
65                               "</b> <p>\n";
66                         &ui_print_footer("", $text{'index_return'});
67                         exit;
68                         }
69                 }
70
71         # Ask if the user is sure
72         print &ui_confirmation_form("delete_group.cgi",
73                 &text('gdel_sure', $group->{'group'}),
74                 [ [ "group", $group->{'group'} ] ],
75                 [ [ "confirmed", $text{'gdel_del'} ] ],
76                 ui_checkbox("others", 1, $text{'gdel_dothers'},
77                            $config{'default_other'}),
78                 );
79
80         &ui_print_footer("index.cgi?mode=groups", $text{'index_return'});
81         }
82