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

Last change on this file since 1888 was 1888, checked in by nanardon, 7 years ago

Fix log description

  • Property svn:executable set to *
File size: 2.4 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 = LATMOS::Accounts->new($self->{config}, noacl => 1);
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    # Unset aliases when user get active:
41
42    my @aliases = $self->{_base}->search_objects('aliases', 'user.active=1', 'comment=EXPIREDACCOUNT');
43    foreach (@aliases) {
44        $self->{_base}->log(LA_NOTICE, 'Deleting aliases %s because user is active', $_);
45        $self->{_base}->_delete_object('aliases', $_);
46        $self->{_base}->commit;
47    }
48
49    my $dest = $self->{syncm}->ini->val($self->{name}, 'destination') or do {
50        $self->{_base}->log(LA_ERR, 'No destination in config, cannot run Expiredaliases');
51        return 1;
52    };
53
54    my %existedAliases = map { $_ => 1 } $self->{_base}->search_objects('aliases', 'user.active=0');
55    foreach my $user ($self->{_base}->search_objects('user', 'status=expired')) {
56        $existedAliases{$user} and next; # An alias existed, doing nothing
57        $self->{_base}->log(LA_NOTICE, "Adding alias to expired user $user");
58        $self->{_base}->create_object('aliases', $user,
59            comment     => 'EXPIREDACCOUNT',
60            description => "Forward because $user is expired, do not remove or change",
61            forward     => [ $dest, "\\$user" ],
62        );
63        $self->{_base}->commit;
64    }
65
66
67    1;
68}
69
701;
71
72__END__
73
74=head1 SEE ALSO
75
76L<LATMOS::Accounts>, L<LATMOS::Accounts::Task>
77
78=head1 AUTHOR
79
80Olivier Thauvin, E<lt>olivier.thauvin@latmos.ipsl.frE<gt>
81
82=head1 COPYRIGHT AND LICENSE
83
84Copyright (C) 2012 CNRS SA/CETP/LATMOS
85
86This library is free software; you can redistribute it and/or modify
87it under the same terms as Perl itself, either Perl version 5.10.0 or,
88at your option, any later version of Perl 5 you may have available.
89
90=cut
91
Note: See TracBrowser for help on using the repository browser.