Separate active and inactive users

Also display more info like days left before lock or delete
tags/smeserver-expire-accounts-0.1.7-1
Daniel Berteaud 9 years ago
parent af5ddf280b
commit 0c7a2fd24c
  1. 6
      root/etc/e-smith/web/functions/expireaccounts
  2. 94
      root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/expireaccounts.pm

@ -66,6 +66,12 @@ __DATA__
</page> </page>
<page name="Modify" pre-event="turn_off_buttons()" post-event="modify_user()"> <page name="Modify" pre-event="turn_off_buttons()" post-event="modify_user()">
<description>MODIFY_USER_DESC</description> <description>MODIFY_USER_DESC</description>
<field
type="literal"
id="UserLockedWarning"
value="print_user_locked_warning()">
<label>LABEL_WARNING</label>
</field>
<field type="text" size="30" id="ExpireLockOn" validation="is_future_date_or_empty" value="get_user_prop('ExpireLockOn')"> <field type="text" size="30" id="ExpireLockOn" validation="is_future_date_or_empty" value="get_user_prop('ExpireLockOn')">
<description>DESC_LOCK_ON_DATE</description> <description>DESC_LOCK_ON_DATE</description>
<label>LABEL_LOCK_ON_DATE</label> <label>LABEL_LOCK_ON_DATE</label>

@ -38,6 +38,7 @@ our @EXPORT = qw(
print_save_button print_save_button
print_custom_button print_custom_button
print_section_bar print_section_bar
print_user_locked_warning
); );
our $a = esmith::AccountsDB->open || die "Couldn't open AccountsDB"; our $a = esmith::AccountsDB->open || die "Couldn't open AccountsDB";
@ -67,28 +68,93 @@ sub print_user_table {
print $q->Tr($q->td($self->localise('NO_USER_ACCOUNTS'))); print $q->Tr($q->td($self->localise('NO_USER_ACCOUNTS')));
return ""; return "";
} }
print " <tr>\n <td colspan=\"2\">\n "; print " <tr><td colspan=\"2\">";
print $q->start_table ({-CLASS => "sme-border"}),"\n "; print $q->start_table ({-CLASS => "sme-border"});
print $q->Tr( print $q->Tr(
esmith::cgi::genSmallCell($q, $self->localise('ACCOUNT'), "header"), esmith::cgi::genSmallCell($q, $self->localise('ACTIVE_ACCOUNT'), "header"),
esmith::cgi::genSmallCell($q, $self->localise('USER_NAME'), "header"), esmith::cgi::genSmallCell($q, $self->localise('USER_NAME'), "header"),
esmith::cgi::genSmallCell($q, $self->localise('FORWARD'), "header"),
esmith::cgi::genSmallCell($q, $self->localise('DAYS_BEFORE_LOCK'), "header"),
esmith::cgi::genSmallCell($q, $self->localise('ACTION'), "header") esmith::cgi::genSmallCell($q, $self->localise('ACTION'), "header")
); );
my $scriptname = basename($0); my $scriptname = basename($0);
my $now = DateTime->now;
foreach my $u (@users) { foreach my $u (@users) {
my $username = $u->key(); my $username = $u->key();
my $first = $u->prop('FirstName'); next unless (($u->prop('PasswordSet') || 'no') eq 'yes');
my $last = $u->prop('LastName'); my $first = $u->prop('FirstName') || '';
my $last = $u->prop('LastName') || '';
my $lock_date = $u->prop('ExpireLockOn') || '';
my $delivery = $u->prop('EmailForward') || 'local';
my $fwd = $u->prop('ForwardAddress') || '';
my $action = "<a href=\"$scriptname?page=0&page_stack=&acctName=$username&wherenext=Modify\">" .
$self->localise('MODIFY') . "</a>";
my $days_left = '';
if ($lock_date =~ m/^(\d{4})\-(\d{1,2})\-(\d{1,2})$/){
my $lock_on = eval {
DateTime->new(
year => $1,
month => $2,
day => $3
);
};
$days_left = ($lock_on - $now)->in_units('days') if ($lock_on);
}
my $addr = ($delivery eq 'local') ? '' : $fwd;
my $action = (($u->prop('PasswordSet') || 'no') eq 'yes') ? "<a href=\"$scriptname?page=0&page_stack=&acctName=$username&wherenext=Modify\">" . print $q->Tr(
$self->localise('MODIFY') . "</a>" : $self->localise('LOCKED'); esmith::cgi::genSmallCell($q, $username, "normal"),
esmith::cgi::genSmallCell($q, "$first $last", "normal"),
esmith::cgi::genSmallCell($q, $addr, "normal"),
esmith::cgi::genSmallCell($q, $days_left, "normal"),
esmith::cgi::genSmallCell($q, $action, "normal")
);
}
# Now, same for locked accounts
print $q->Tr(
esmith::cgi::genSmallCell($q, $self->localise('INACTIVE_ACCOUNT'), "header"),
esmith::cgi::genSmallCell($q, $self->localise('USER_NAME'), "header"),
esmith::cgi::genSmallCell($q, $self->localise('FORWARD'), "header"),
esmith::cgi::genSmallCell($q, $self->localise('DAYS_BEFORE_DELETE'), "header"),
esmith::cgi::genSmallCell($q, $self->localise('ACTION'), "header")
);
foreach my $u (@users) {
my $username = $u->key();
next unless (($u->prop('PasswordSet') || 'no') ne 'yes');
my $first = $u->prop('FirstName') || '';
my $last = $u->prop('LastName') || '';
my $delete_in = $u->prop('ExpireDeleteAfterLock') || '';
my $locked_on = $u->prop('ExpireLockedOn') || '';
my $delivery = $u->prop('EmailForward') || '';
my $fwd = $u->prop('ForwardAddress') || '';
my $action = "<a href=\"$scriptname?page=0&page_stack=&acctName=$username&wherenext=Modify\">" .
$self->localise('MODIFY') . "</a>";
my $days_left = '';
if ($delete_in =~ m/^\d+$/ && $locked_on =~ m/^(\d{4})\-(\d{1,2})\-(\d{1,2})$/){
my $locked_date = eval {
DateTime->new(
year => $1,
month => $2,
day => $3
);
};
if ($locked_date){
my $delete_on = $locked_date->add(days => $delete_in);
$days_left = ($delete_on - $now)->in_units('days');
}
}
my $addr = ($delivery eq 'local') ? '' : $fwd;
print $q->Tr( print $q->Tr(
esmith::cgi::genSmallCell($q, $username, "normal"), esmith::cgi::genSmallCell($q, $username, "normal"),
esmith::cgi::genSmallCell($q, "$first $last", "normal"), esmith::cgi::genSmallCell($q, "$first $last", "normal"),
esmith::cgi::genSmallCell($q, "$action", "normal") esmith::cgi::genSmallCell($q, $addr, "normal"),
esmith::cgi::genSmallCell($q, $days_left, "normal"),
esmith::cgi::genSmallCell($q, $action, "normal")
); );
} }
@ -97,6 +163,18 @@ sub print_user_table {
return ""; return "";
} }
sub print_user_locked_warning {
my ($self) = @_;
my $u = $self->{cgi}->param('acctName');
my $user = $a->get($u);
return $self->localise('USER_NOT_FOUND') unless ($user);
my $type = $user->prop('type');
return $self->localise('ERROR_OCCURRED') unless ($type && $type eq 'user');
my $pass = $user->prop('PasswordSet') || 'no';
return $self->localise('USER_LOCKED') if ($pass eq 'no');
return "";
}
sub print_save_button { sub print_save_button {
my ($self) = @_; my ($self) = @_;
$self->print_button("SAVE"); $self->print_button("SAVE");

Loading…
Cancel
Save