From c9dc4ba631669122918ee932159a53a319d0ff97 Mon Sep 17 00:00:00 2001 From: Serghei MIHAI Date: Wed, 7 Jan 2015 11:22:12 +0100 Subject: [PATCH 1/2] ldap_backend: username computed from uid by default --- authentic2/backends/ldap_backend.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/authentic2/backends/ldap_backend.py b/authentic2/backends/ldap_backend.py index 898c608..0a73f62 100644 --- a/authentic2/backends/ldap_backend.py +++ b/authentic2/backends/ldap_backend.py @@ -79,7 +79,7 @@ _DEFAULTS = { # realm for selecting an ldap configuration or formatting usernames 'realm': 'ldap', # template for building username - 'username_template': '{username}@{realm}', + 'username_template': '{uid}@{realm}', # allow to match multiple user records 'multimatch': True, # update username on all login, use with CAUTION !! only if you know that @@ -430,7 +430,7 @@ class LDAPBackend(object): log.error('user bind failed: authz_id not found %r', ', '.join(authz_ids)) if block['replicas']: break - return self._return_user(uri, authz_id, username, password, conn, block) + return self._return_user(uri, authz_id, password, conn, block) except ldap.SERVER_DOWN: log.error('ldap authentication error: %r is down', uri) finally: @@ -456,11 +456,11 @@ class LDAPBackend(object): def backend_name(self): return '%s.%s' % (__name__, self.__class__.__name__) - def create_username(self, uri, dn, username, password, conn, block, attributes): + def create_username(self, block, attributes): '''Build a username using the configured template''' username_template = unicode(block['username_template']) - return username_template.format(username=username, uri=uri, - block=block, realm=block['realm'], **attributes) + return username_template.format(uri=uri, realm=block['realm'], + **attributes) def save_user(self, user, username): User = get_user_model() @@ -762,14 +762,13 @@ class LDAPBackend(object): .delete() @commit_on_success - def _return_user(self, uri, dn, username, password, conn, block): + def _return_user(self, uri, dn, password, conn, block): attributes = self.get_ldap_attributes(block, conn, dn) if attributes is None: # attributes retrieval failed return log.debug('retrieved attributes for %r: %r', dn, attributes) - username = self.create_username(uri, dn, username, password, conn, - block, attributes) + username = self.create_username(block, attributes) if block['transient']: return self._return_transient_user(uri, dn, username, password, conn, block, attributes) -- 2.1.4