Projet

Général

Profil

Development #52924

Désactivation en masse des utilisateurs d'une source LDAP n'existant plus

Ajouté par Benjamin Renard il y a presque 3 ans. Mis à jour il y a presque 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
09 avril 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Aujourd'hui, si on retravaille les sources d'utilisateurs LDAP et qu'on renomme par exemple une source, les utilisateurs sont tous resynchronisés dans l'annuaire (comme de nouveaux utilisateurs), mais les utilisateurs associés à l'ancien nom de la source ne sont pas désactivés.

On pourrait assez facilement imaginer que le script deactivate-orphaned-ldap-users s'occupe de cela, mais je ne sais pas comment lister toutes les sources d'utilisateurs actives pour en déduire celles ayant disparues. Peut-être existe-t-il d'ailleurs d'autres sources externes que les sources LDAP ?

Aujourd'hui, j'utilise la requête SQL suivante pour gérer ce cas :

UPDATE custom_user_user SET is_active='f' AND deactivation=now() WHERE is_active='t' AND id IN (SELECT id FROM authentic2_userexternalid WHERE source NOT IN ('source_active_1', 'source_active_2', [...]));

Fichiers

Révisions associées

Révision 318c709f (diff)
Ajouté par Benjamin Renard il y a presque 3 ans

ldap: deactivate orphaned users of old sources (#52924)

Historique

#1

Mis à jour par Benjamin Dauvergne il y a presque 3 ans

Il faut accumuler les sources realms = [block['realm'] for block in blocks] exclure les UserExternalId pour ces sources uei_qs = UserExternalId.objects.exlucde(source__in=realms) ensuite filtrer les utilisateurs User.objects.filter(userexternalid__in=uei_qs).

#2

Mis à jour par Benjamin Renard il y a presque 3 ans

Benjamin Dauvergne a écrit :

Il faut accumuler les sources realms = [block['realm'] for block in blocks] exclure les UserExternalId pour ces sources uei_qs = UserExternalId.objects.exlucde(source__in=realms) ensuite filtrer les utilisateurs User.objects.filter(userexternalid__in=uei_qs).

Voilà un patch qui fait le boulot. Si je te suis bien, la seule source d'utilisateurs externes, c'est l'annuaire LDAP donc ?

#3

Mis à jour par Benjamin Dauvergne il y a presque 3 ans

Benjamin Renard a écrit :

Benjamin Dauvergne a écrit :

Il faut accumuler les sources realms = [block['realm'] for block in blocks] exclure les UserExternalId pour ces sources uei_qs = UserExternalId.objects.exlucde(source__in=realms) ensuite filtrer les utilisateurs User.objects.filter(userexternalid__in=uei_qs).

Voilà un patch qui fait le boulot. Si je te suis bien, la seule source d'utilisateurs externes, c'est l'annuaire LDAP donc ?

Actuellement oui.

#4

Mis à jour par Benjamin Renard il y a presque 3 ans

Benjamin Renard a écrit :

Benjamin Dauvergne a écrit :

Il faut accumuler les sources realms = [block['realm'] for block in blocks] exclure les UserExternalId pour ces sources uei_qs = UserExternalId.objects.exlucde(source__in=realms) ensuite filtrer les utilisateurs User.objects.filter(userexternalid__in=uei_qs).

Voilà un patch qui fait le boulot. Si je te suis bien, la seule source d'utilisateurs externes, c'est l'annuaire LDAP donc ?

Est-ce que ce patch peut faire l'affaire ? Pour info, je viens de le tester sur une instance client et il a fait le job attendu.

#5

Mis à jour par Serghei Mihai il y a presque 3 ans

  • Statut changé de Nouveau à Solution validée
  • Assigné à mis à Benjamin Renard
#6

Mis à jour par Benjamin Dauvergne il y a presque 3 ans

Il faudrait un test.

#7

Mis à jour par Serghei Mihai il y a presque 3 ans

  • Statut changé de Solution validée à En cours

J'ai rajouté le test. Branche poussée, en cours de build.

#8

Mis à jour par Benjamin Dauvergne il y a presque 3 ans

  • Statut changé de En cours à Solution validée
#9

Mis à jour par Serghei Mihai il y a presque 3 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 318c709f2445aa5d62f4fea397b7477ee237c534 (origin/main)
Author: Benjamin Renard <brenard@easter-eggs.com>
Date:   Fri Apr 9 18:53:43 2021 +0200

    ldap: deactivate orphaned users of old sources (#52924)
#10

Mis à jour par Frédéric Péters il y a presque 3 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF