\n";
print " | $text{'edit_user'} | \n";
if ($access{'rename'} || !$in{'user'}) {
print " | \n";
}
else {
print "$user{'name'} | \n";
}
# Find and show parent group
@glist = &list_groups();
@mcan = $access{'gassign'} eq '*' ?
( ( map { $_->{'name'} } @glist ), '_none' ) :
split(/\s+/, $access{'gassign'});
map { $gcan{$_}++ } @mcan;
if (@glist && %gcan && !$in{'risk'} && !$user{'risk'}) {
print "$text{'edit_group'} | \n";
print " | \n";
}
print " \n";
# Show password type menu and current password
$passmode = !$in{'user'} ? 0 :
$user{'pass'} eq 'x' ? 3 :
$user{'sync'} ? 2 :
$user{'pass'} eq 'e' ? 5 :
$user{'pass'} eq '*LK*' ? 4 : 1;
print " | $text{'edit_pass'} | \n";
print "\n";
if ($passmode == 1) {
# Show temporary lock option
print &ui_checkbox("lock", 1, $text{'edit_templock'},
$user{'pass'} =~ /^\!/ ? 1 : 0);
}
print " | \n";
if ($access{'chcert'}) {
# SSL certificate name
print " | $text{'edit_cert'} | \n";
print &ui_opt_textbox("cert", $user{'cert'}, 50, $text{'edit_none'}),
" | \n";
}
if ($access{'lang'}) {
# Current language
print " | $text{'edit_lang'} | \n";
printf " %s\n",
$user{'lang'} ? '' : 'checked', $text{'default'};
printf "\n",
$user{'lang'} ? 'checked' : '';
print " | \n";
}
if ($access{'cats'}) {
# Show categorized modules?
print " | $text{'edit_notabs'} | \n";
printf " %s\n",
$user{'notabs'} == 1 ? 'checked' : '', $text{'yes'};
printf " %s\n",
$user{'notabs'} == 2 ? 'checked' : '', $text{'no'};
printf " %s | \n",
$user{'notabs'} == 0 ? 'checked' : '', $text{'default'};
}
if ($access{'logouttime'}) {
# Show logout time
print " | $text{'edit_logout'} | \n";
print &ui_opt_textbox("logouttime", $user{'logouttime'}, 5,
$text{'default'})," $text{'edit_mins'} | \n";
}
if ($access{'theme'}) {
# Current theme
print " | $text{'edit_theme'} | \n";
printf " %s\n",
defined($user{'theme'}) ? "" : "checked", $text{'edit_themeglobal'};
printf "\n",
defined($user{'theme'}) ? "checked" : "";
print " | \n";
}
if ($access{'ips'}) {
# Allowed IP addresses
print " | ",&hlink("$text{'edit_ips'}", "ips")," | \n";
print " | \n";
}
if (&supports_rbac() && $access{'mode'} == 0) {
# Deny access to modules not managed by RBAC?
print " | $text{'edit_rbacdeny'} | \n";
print &ui_radio("rbacdeny", $user{'rbacdeny'} ? 1 : 0,
[ [ 0, $text{'edit_rbacdeny0'} ],
[ 1, $text{'edit_rbacdeny1'} ] ]);
print " | \n";
}
if ($access{'times'}) {
# Show allowed days of the week
%days = map { $_, 1 } split(/,/, $user{'days'});
print " | $text{'edit_days'} | \n";
print "\n";
print &ui_radio("days_def", $user{'days'} eq '' ? 1 : 0,
[ [ 1, $text{'edit_alldays'} ],
[ 0, $text{'edit_seldays'} ] ])," \n";
for(my $i=0; $i<7; $i++) {
print &ui_checkbox("days", $i, $text{'day_'.$i}, $days{$i});
}
print " | \n";
# Show allow hour/minute range
($hf, $mf) = split(/\./, $user{'hoursfrom'});
($ht, $mt) = split(/\./, $user{'hoursto'});
print " | $text{'edit_hours'} | \n";
print "\n";
print &ui_radio("hours_def", $user{'hoursfrom'} eq '' ? 1 : 0,
[ [ 1, $text{'edit_allhours'} ],
[ 0, &text('edit_selhours',
&ui_textbox("hours_hfrom", $hf, 2),
&ui_textbox("hours_mfrom", $mf, 2),
&ui_textbox("hours_hto", $ht, 2),
&ui_textbox("hours_mto", $mt, 2)) ] ]);
print " | \n";
}
if ($user{'risk'} || $in{'risk'}) {
# Creating or editing a risk-level user
print " | $text{'edit_risk'} | \n";
foreach $s ('high', 'medium', 'low') {
printf " %s\n",
$s, $user{'risk'} eq $s ? 'checked' : '',
$text{"edit_risk_$s"};
}
print " | \n";
print " | $text{'edit_skill'} | \n";
foreach $s ('high', 'medium', 'low') {
printf " %s\n",
$s, $user{'skill'} eq $s ? 'checked' : '',
$text{"skill_$s"};
}
print " | \n";
}
else {
# Creating or editing a normal user
@mcan = $access{'mode'} == 1 ? @{$me->{'modules'}} :
$access{'mode'} == 2 ? split(/\s+/, $access{'mods'}) :
&list_modules();
map { $mcan{$_}++ } @mcan;
map { $has{$_}++ } @{$user{'modules'}};
map { $has{$_} = 0 } $group ? @{$group->{'modules'}} : ();
# Show all modules, under categories
@mlist = grep { $access{'others'} || $has{$_->{'dir'}} || $mcan{$_->{'dir'}} } &list_module_infos();
print " $text{'edit_modules'} ",
"$text{'edit_groupmods'} | \n";
print "\n";
print &select_all_link("mod", 0, $text{'edit_selall'})," \n";
print &select_invert_link("mod", 0, $text{'edit_invert'})," \n";
@cats = &unique(map { $_->{'category'} } @mlist);
&read_file("$config_directory/webmin.catnames", \%catnames);
print "\n";
foreach $c (sort { $b cmp $a } @cats) {
@cmlist = grep { $_->{'category'} eq $c } @mlist;
print " | ",
$catnames{$c} || $text{'category_'.$c},
" | \n";
$sw = 0;
foreach $m (@cmlist) {
local $md = $m->{'dir'};
if (!$sw) { print "\n"; }
print "";
if ($mcan{$md}) {
printf"\n",
$has{$md} ? "checked" : "";
if ($access{'acl'} && $in{'user'}) {
# Show link for editing ACL
printf "".
"%s\n",
&urlize($m->{'dir'}),
"user", &urlize($in{'user'}),
$m->{'desc'};
}
else {
print "$m->{'desc'}\n";
}
}
else {
printf " %s\n",
$has{$md} ? 'tick' : 'empty', $m->{'desc'};
}
print " | ";
if ($sw) { print " \n"; }
$sw = !$sw;
}
}
if ($access{'acl'}) {
print " | ",
$text{'edit_special'}," | \n";
print "\n";
print "| ",$text{'index_global'}," | \n";
print " \n";
}
print " \n";
print &select_all_link("mod", 0, $text{'edit_selall'})," \n";
print &select_invert_link("mod", 0, $text{'edit_invert'}),"\n";
print " | \n";
}
print " |