User account expiration control panel for SME Server
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

48 lines
1.2 KiB

#!/usr/bin/perl -w
use strict;
use esmith::AccountsDB;
use esmith::event;
use DateTime;
my $a = esmith::AccountsDB->open or
die "Could not open AccountsDB\n";
my $event = shift;
my $userName = shift;
my @users;
if (defined $userName){
my $user = $a->get($userName);
die "Account $userName is not a user account; can't update the auto-reply message.\n"
unless $user && $user->prop('type') eq "user";
@users = ($user);
}
else{
@users = ( $a->users );
}
my $now = DateTime->now;
foreach my $user (@users){
my $userName = $user->key;
# Remove user from all its groups
my @groups = $a->user_group_list($userName);
$a->remove_user_from_groups($userName, @groups);
event_signal('group-modify', @groups) if (scalar @groups);
# Set forward if needed
my $fwd = $user->prop('ExpireForwardAfterLock') || '';
if ($fwd ne ''){
$user->set_prop('ForwardAddress', $fwd);
$user->set_prop('EmailForward', 'forward');
}
# Remove expiration settings now that the account is locked
$user->delete_prop('ExpireLockOn');
$user->delete_prop('ExpireLastNotifiedOn');
# Set the expiration date
$user->set_prop('ExpireLockedOn', $now->ymd);
}
exit (0);