Changeset 1100


Ignore:
Timestamp:
08/07/12 18:26:26 (12 years ago)
Author:
nanardon
Message:

expired account are deleted by an automated request

Location:
trunk/LATMOS-Accounts/lib/LATMOS/Accounts
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql.pm

    r1096 r1100  
    540540 
    541541 
    542 =head2 list_request_by_object ($otype, $id) 
     542=head2 list_request_by_object ($otype, $id, $req) 
    543543 
    544544Return the list of pending request for a specific object 
    545545 
     546C<$req> is an optional forms name to limit search 
     547 
    546548=cut 
    547549 
    548550sub list_request_by_object { 
    549     my ($self, $otype, $id) = @_; 
     551    my ($self, $otype, $id, $req) = @_; 
    550552 
    551553    my $sth = $self->db->prepare(q{ 
     
    558560        accreq_attributes.value = ? 
    559561        and request.object = ? 
     562    } . 
     563    ($req ? ' and request.name = ? ' : '') 
     564    . q{ 
    560565        order by apply 
    561566    }); 
    562     $sth->execute($otype, $id); 
     567    $sth->execute($otype, $id, ($req ? ($req) : ())); 
    563568    my @ids; 
    564569    while (my $res = $sth->fetchrow_hashref) { 
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Mail.pm

    r1011 r1100  
    107107    } 
    108108 
    109     if (Mail::Sendmail::sendmail( 
    110             %mail, 
    111             Message => $message, 
    112         )) { 
    113         la_log(LA_DEBUG, "Mail for id %s sent to %s", 
    114             $mail{'Message-ID'}, 
    115             $mail{to}, 
    116         ); 
    117         return 1; 
     109    if ($ENV{LA_NO_MAIL}) { 
     110        printf STDERR "mail %s to %s not sent due to \$LA_NO_MAIL env\n", 
     111            $mail{subject} || '', $mail{to}; 
    118112    } else { 
    119         la_log(LA_ERR, "Cannot send mail: %s", $Mail::Sendmail::error); 
    120         return; 
     113        if (Mail::Sendmail::sendmail( 
     114                %mail, 
     115                Message => $message, 
     116            )) { 
     117            la_log(LA_DEBUG, "Mail for id %s sent to %s", 
     118                $mail{'Message-ID'}, 
     119                $mail{to}, 
     120            ); 
     121            return 1; 
     122        } else { 
     123            la_log(LA_ERR, "Cannot send mail: %s", $Mail::Sendmail::error); 
     124            return; 
     125        } 
    121126    } 
    122127} 
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Maintenance.pm

    r1085 r1100  
    55use base qw(LATMOS::Accounts); 
    66use LATMOS::Accounts::Log; 
     7use LATMOS::Accounts::Bases::Sql::DataRequest; 
    78use FindBin qw($Bin); 
    89 
     
    195196 
    196197    my %managers; 
    197     foreach my $user (@users) { 
    198         my $uobj = $self->_base->get_object('user', $user); 
    199         $uobj->get_attributes('unexported') and next; # can't happend 
    200         my $manager = $uobj->get_attributes('managerContact') || 'N/A'; 
    201         push(@{$managers{$manager}{users}}, $uobj); 
    202     } 
    203  
    204     foreach (keys %managers) { 
    205         my $oman = $self->_base->get_object('user', $_) or next; # can't happend 
    206         $managers{$_}{manager} = $oman; 
    207         my $mail = $oman->get_attributes('mail') or next; 
    208          
    209         my %mail = ( 
    210             Subject => 'LATMOS expired account', 
    211             'X-LATMOS-Reason' => 'Account destruction', 
    212         ); 
    213         $mail{to} = $options{to} || $mail; 
    214         if ($lamail->process(\%mail, $managers{$oman->id})) { 
    215             la_log(LA_NOTICE, 
    216                 "Expired account reminder mail for %s sent to %s (cc: %s) for %s", 
    217                 $oman->id, 
    218                 $mail{to}, 
    219                 ($mail{cc} || ''), 
    220                 join(', ', map { $_->id } @{$managers{$oman->id}{users}}) 
     198    if (my $accreq = $self->_base->get_object('accreq', 'user-removal')) { 
     199        foreach my $user (@users) { 
     200            my $uobj = $self->_base->get_object('user', $user); 
     201            $uobj->get_attributes('unexported') and next; # can't happend 
     202            my $manager = $uobj->get_attributes('managerContact') || 'N/A'; 
     203            push(@{$managers{$manager}{users}}, $uobj); 
     204 
     205            my $req = LATMOS::Accounts::Bases::Sql::DataRequest->new($accreq); 
     206            $req->set_ptr_object($uobj); 
     207            my @date = localtime( time + 3600 * 24 * 30); # eg: 1 month 
     208            my $apply_date = sprintf( 
     209                '%02d/%02d/%d', 
     210                $date[3], 
     211                $date[4] + 1, 
     212                $date[5] + 1900 
    221213            ); 
     214 
     215            if ($self->_base->list_request_by_object( 
     216                    'user', $user, 'user-removal')) { 
     217                $self->base->log(LA_NOTICE, 
     218                    "Request %s already exists for %s, skipping", 
     219                    'accreq', 
     220                    $user, 
     221                ); 
     222            } else { 
     223                $req->register( 
     224                    { 
     225                        user => undef, 
     226                        apply => $apply_date, 
     227                        auto => 1, 
     228                    }, 
     229                    exported => 0, 
     230                ); 
     231                $self->_base->commit; 
     232            } 
     233        } 
     234    } 
     235 
     236    unless($options{test}) { 
     237        foreach (keys %managers) { 
     238            my $oman = $self->_base->get_object('user', $_) or next; # can't happend 
     239            $managers{$_}{manager} = $oman; 
     240            my $mail = $oman->get_attributes('mail') or next; 
     241 
     242            my %mail = ( 
     243                Subject => 'LATMOS expired account', 
     244                'X-LATMOS-Reason' => 'Account destruction', 
     245            ); 
     246            $mail{to} = $options{to} || $mail; 
     247            if ($lamail->process(\%mail, $managers{$oman->id})) { 
     248                la_log(LA_NOTICE, 
     249                    "Expired account reminder mail for %s sent to %s (cc: %s) for %s", 
     250                    $oman->id, 
     251                    $mail{to}, 
     252                    ($mail{cc} || ''), 
     253                    join(', ', map { $_->id } @{$managers{$oman->id}{users}}) 
     254                ); 
     255            } 
    222256        } 
    223257    } 
Note: See TracChangeset for help on using the changeset viewer.