Projet

Général

Profil

0001-WIP-ldap_backend-deactivate-accounts-if-ldap-entry-m.patch

Paul Marillonnet, 12 février 2019 12:41

Télécharger (2,12 ko)

Voir les différences:

Subject: [PATCH] WIP ldap_backend : deactivate accounts if ldap entry missing
 (#6379)

 src/authentic2/backends/ldap_backend.py | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)
src/authentic2/backends/ldap_backend.py
947 947
                yield user_dn, user
948 948

  
949 949
    @classmethod
950
    def get_users(cls):
950
    def _get_user_tuples(cls):
951 951
        logger = logging.getLogger(__name__)
952 952
        for block in cls.get_config():
953 953
            conn = cls.get_connection(block)
......
960 960
            attrs = cls.get_ldap_attributes_names(block)
961 961
            users = cls.paged_search(conn, user_basedn, ldap.SCOPE_SUBTREE, user_filter,
962 962
                                     attrlist=attrs)
963
            backend = cls()
964 963
            for user_dn, data in users:
965 964
                # ignore referrals
966 965
                if not user_dn:
967 966
                    continue
968 967
                data = cls.normalize_ldap_results(data)
969 968
                data['dn'] = user_dn
970
                yield backend._return_user(user_dn, None, conn, block, data)
969
                yield user_dn, None, conn, block, data
970

  
971
    @classmethod
972
    def get_users(cls):
973
        backend = cls()
974
        for user_tuple in cls._get_user_tuples():
975
            yield backend._return_user(*user_tuple)
976

  
977
    @classmethod
978
    def deactivate_orphan_accounts(cls):
979
        backend = cls()
980
        usernames = [backend.create_username(*user_tuple[3:5]) for user_tuple in cls._get_user_tuples()]
981
        for user in LDAPUser.objects.all():
982
            if user.username not in usernames:
983
                setattr(user, 'is_active', False)
984
                user._changed = True
985
                user.save()
971 986

  
972 987
    @classmethod
973 988
    def ad_encoding(cls, s):
974
-