source: trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Task/Expiredaliases.pm @ 2439

Last change on this file since 2439 was 2439, checked in by nanardon, 4 years ago

Flag in log when change are made by SyncManager?

  • Property svn:executable set to *
File size: 2.7 KB
Line 
1package LATMOS::Accounts::Task::Expiredaliases;
2
3use strict;
4use warnings;
5use base qw(LATMOS::Accounts::Task);
6use LATMOS::Accounts;
7use LATMOS::Accounts::Log;
8use LATMOS::Accounts::Utils;
9
10=head1 NAME
11
12LATMOS::Accounts::Task::Expiredaliases - Set aliases to expired account
13
14=head1 DESCRIPTION
15
16This module set forward to expired accounts to inform people the account is closed.
17
18The forward is set to c<destination> parameter found in C<la-sync-manager.ini>
19
20=cut
21
22# Every 10 minutes
23sub runDelay { 10 * 60 }
24
25sub init {
26    my ($self) = @_;
27    my $LA = $self->LA;
28    my $labase = $self->{base} ? $LA->base($self->{base}) : $LA->base;
29    $labase && $labase->load or die "Cannot load base";
30
31    $self->{_la} = $LA;
32    $self->{_base} = $labase;
33
34    1;
35}
36
37sub run {
38    my ($self) = @_;
39
40    my $modifDelay = $self->{syncm}->ini->val($self->{name}, 'modifdelay', 60);
41    my $waitAfterModif = DateTime->now->subtract( minutes => $modifDelay  )->iso8601;
42
43    # Unset aliases when user get active:
44
45    my @aliases = $self->{_base}->search_objects('aliases',
46        'user.active=1',
47        'comment=EXPIREDACCOUNT',
48        'user.date<' . $waitAfterModif,
49    );
50    foreach (@aliases) {
51        $self->{_base}->log(LA_NOTICE, 'Deleting aliases %s because user is active', $_);
52        $self->{_base}->_delete_object('aliases', $_);
53        $self->{_base}->commit;
54    }
55
56    my $dest = $self->{syncm}->ini->val($self->{name}, 'destination') or do {
57        $self->{_base}->log(LA_ERR, 'No destination in config, cannot run Expiredaliases');
58        return 1;
59    };
60
61    my %existedAliases = map { $_ => 1 } $self->{_base}->search_objects('aliases', 'user.active=0');
62
63    foreach my $user ($self->{_base}->search_objects('user',
64            'status=expired',
65            'date<' . $waitAfterModif,
66            'oalias=NULL')
67        ) {
68        $existedAliases{$user} and next; # An alias existed, doing nothing
69        $self->{_base}->log(LA_NOTICE, "Adding alias to expired user $user");
70        $self->{_base}->create_object('aliases', $user,
71            comment     => 'EXPIREDACCOUNT',
72            description => "Forward because $user is expired, do not remove or change",
73            forward     => [ $dest, "\\$user" ],
74        );
75        $self->{_base}->commit;
76    }
77
78
79    1;
80}
81
821;
83
84__END__
85
86=head1 SEE ALSO
87
88L<LATMOS::Accounts>, L<LATMOS::Accounts::Task>
89
90=head1 AUTHOR
91
92Olivier Thauvin, E<lt>olivier.thauvin@latmos.ipsl.frE<gt>
93
94=head1 COPYRIGHT AND LICENSE
95
96Copyright (C) 2012 CNRS SA/CETP/LATMOS
97
98This library is free software; you can redistribute it and/or modify
99it under the same terms as Perl itself, either Perl version 5.10.0 or,
100at your option, any later version of Perl 5 you may have available.
101
102=cut
103
Note: See TracBrowser for help on using the repository browser.