#!/usr/local/bin/perl # delete_user.cgi # Delete a user, after asking for confirmation require './user-lib.pl'; &ReadParse(); &lock_user_files(); @ulist = &list_users(); $user = $ulist[$in{'num'}]; $user || &error($text{'udel_enum'}); &error_setup($text{'udel_err'}); %access = &get_module_acl(); &can_edit_user(\%access, $user) || &error($text{'udel_euser'}); $access{'udelete'} || &error($text{'udel_euser'}); $| = 1; &ui_print_header(undef, $text{'udel_title'}, ""); if (!$config{'delete_root'} && $user->{'uid'} <= 10) { print "
$text{'udel_eroot'}
\n"; print "
$text{'udel_ealready'}
\n"; print "
\n"; } else { print "$text{'udel_done'}
\n";
}
}
print "$text{'udel_pass'}
\n";
&delete_user($user);
print "$text{'udel_done'}
\n";
print "$text{'udel_groups'}
\n";
foreach $g (&list_groups()) {
@mems = split(/,/, $g->{'members'});
$idx = &indexof($user->{'user'}, @mems);
if ($idx >= 0) {
splice(@mems, $idx, 1);
%newg = %$g;
$newg{'members'} = join(',', @mems);
&modify_group($g, \%newg);
}
$mygroup = $g if ($g->{'group'} eq $user->{'user'});
}
print "$text{'udel_done'}
\n";
if ($mygroup && !$mygroup->{'members'}) {
local $another;
foreach $ou (&list_users()) {
$another = $ou if ($ou->{'gid'} == $mygroup->{'gid'});
}
if (!$another) {
print "$text{'udel_ugroup'}
\n";
&delete_group($mygroup);
print "$text{'udel_done'}
\n";
}
}
&unlock_user_files();
if ($in{'delhome'} && $user->{'home'} !~ /^\/+$/ && $access{'delhome'} != 0) {
# Delete home directory
print "$text{'udel_home'}
\n";
&lock_file($user->{'home'});
&delete_home_directory($user);
&unlock_file($user->{'home'});
print "$text{'udel_done'}
\n"; } &made_changes(); %p = ( %in, %$user ); delete($p{'pass'}); &webmin_log("delete", "user", $user->{'user'}, \%p); done: &ui_print_footer("", $text{'index_return'}); } else { # Check if something has changed if ($user->{'user'} ne $in{'user'}) { print "
$text{'udel_echanged'}
\n"; &ui_print_footer("", $text{'index_return'}); exit; } # Ask if the user is sure print "
\n"; &ui_print_footer("", $text{'index_return'}); }