From bac998c4b9421e79a84ec7834bc2279779fd144d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Wed, 31 Oct 2018 10:17:31 +0100 Subject: [PATCH] ldap: don't crash on duplicated users (#27697) --- src/authentic2/backends/ldap_backend.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/authentic2/backends/ldap_backend.py b/src/authentic2/backends/ldap_backend.py index 78f8c098..3e5c4ec3 100644 --- a/src/authentic2/backends/ldap_backend.py +++ b/src/authentic2/backends/ldap_backend.py @@ -834,12 +834,12 @@ class LDAPBackend(object): external_id = self.build_external_id(eid_tuple, attributes) if not external_id: continue - try: - log.debug('lookup using external_id %r: %r', eid_tuple, external_id) - return LDAPUser.objects.prefetch_related('groups').get( - userexternalid__external_id__iexact=external_id, userexternalid__source=block['realm']) - except User.DoesNotExist: - pass + log.debug('lookup using external_id %r: %r', eid_tuple, external_id) + user = LDAPUser.objects.prefetch_related('groups').filter( + userexternalid__external_id__iexact=external_id, + userexternalid__source=block['realm']).first() + if user: + return user def lookup_existing_user(self, username, block, attributes): for lookup_type in block['lookups']: -- 2.19.1