1 |
1 |
# authentic2 - versatile identity manager
|
2 |
|
# Copyright (C) 2010-2019 Entr'ouvert
|
|
2 |
# Copyright (C) 2010-2020 Entr'ouvert
|
3 |
3 |
#
|
4 |
4 |
# This program is free software: you can redistribute it and/or modify it
|
5 |
5 |
# under the terms of the GNU Affero General Public License as published
|
... | ... | |
16 |
16 |
|
17 |
17 |
from __future__ import print_function
|
18 |
18 |
|
19 |
|
import json
|
20 |
19 |
import logging
|
21 |
20 |
import smtplib
|
22 |
21 |
|
23 |
22 |
from datetime import timedelta
|
24 |
23 |
from django.contrib.auth import get_user_model
|
25 |
|
from django.core.management.base import BaseCommand, CommandError
|
|
24 |
from django.core.management.base import BaseCommand
|
26 |
25 |
from django.utils import timezone
|
27 |
26 |
from django.utils.six.moves.urllib import parse as urlparse
|
28 |
|
from django.template.loader import render_to_string
|
29 |
27 |
from django_rbac.utils import get_ou_model
|
30 |
28 |
|
31 |
29 |
from authentic2.models import DeletedUser
|
... | ... | |
72 |
70 |
for ou in get_ou_model().objects.filter(clean_unused_accounts_alert__isnull=False):
|
73 |
71 |
alert_delay = timedelta(days=ou.clean_unused_accounts_alert)
|
74 |
72 |
deletion_delay = timedelta(days=ou.clean_unused_accounts_deletion)
|
75 |
|
users = User.objects.filter(ou=ou, last_login__lte=now-alert_delay)
|
|
73 |
users = User.objects.filter(ou=ou, last_login__lte=now - alert_delay)
|
76 |
74 |
|
77 |
75 |
for user in users.filter(last_account_deletion_alert__isnull=True):
|
78 |
|
logger.info('%s last login %d days ago, sending alert', user,
|
79 |
|
ou.clean_unused_accounts_alert)
|
|
76 |
logger.info('%s last login %d days ago, sending alert', user, ou.clean_unused_accounts_alert)
|
80 |
77 |
self.send_alert(user)
|
81 |
78 |
|
82 |
79 |
to_delete = users.filter(
|
... | ... | |
85 |
82 |
last_account_deletion_alert__lte=now - (deletion_delay - alert_delay)
|
86 |
83 |
)
|
87 |
84 |
for user in to_delete:
|
88 |
|
logger.info('%s last login more than %d days ago, deleting user',
|
89 |
|
user, ou.clean_unused_accounts_deletion)
|
|
85 |
logger.info(
|
|
86 |
'%s last login more than %d days ago, deleting user', user,
|
|
87 |
ou.clean_unused_accounts_deletion)
|
90 |
88 |
self.delete_user(user)
|
91 |
89 |
|
92 |
90 |
def send_alert(self, user):
|
93 |
|
-
|