From ac3dcae4a2f842166d60cb7eebb86a0bd0cc3b12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Fri, 7 Sep 2018 11:19:30 +0200 Subject: [PATCH] also sync recent user changes (#26071) --- .../management/commands/sync-cut.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/authentic2_gnm/management/commands/sync-cut.py b/src/authentic2_gnm/management/commands/sync-cut.py index 797d44b..5dcc102 100644 --- a/src/authentic2_gnm/management/commands/sync-cut.py +++ b/src/authentic2_gnm/management/commands/sync-cut.py @@ -14,6 +14,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +import datetime import requests import sys @@ -55,6 +56,24 @@ class Command(BaseCommand): account.user.save() OIDCAccount.objects.filter(sub__in=unknown_uuids).delete() + # update recently modified users + cut_users = OIDCProvider.objects.get(name='cut') + url = settings.CUT_API_BASE_URL + 'users/?modified__gt=%s' % ( + datetime.datetime.now() - datetime.timedelta(seconds=120)).strftime('%Y-%m-%dT%H:%M:%S') + resp = requests.get(url, auth=settings.CUT_API_CREDENTIALS) + for user_dict in resp.json()['results']: + try: + account = OIDCAccount.objects.get(user__email=user_dict['email']) + except OIDCAccount.DoesNotExist: + continue + for claim in cut_users.claim_mappings.all(): + setattr(account.user, claim.attribute, user_dict.get(claim.claim)) + try: + setattr(account.user.attributes, claim.attribute, user_dict.get(claim.claim)) + except AttributeError: + pass + account.user.save() + # get new agents cut_agents = OIDCProvider.objects.get(name='cut-agents')