diff --git a/django_auth_ldap/backend.py b/django_auth_ldap/backend.py index 6285ca73..37379afd 100644 --- a/django_auth_ldap/backend.py +++ b/django_auth_ldap/backend.py @@ -246,6 +246,9 @@ def ldap_to_django_username(self, username): def django_to_ldap_username(self, username): return username + def get_django_username_from_ldap_user(self, ldap_user): + return self.ldap_to_django_username(ldap_user._username) + class _LDAPUser: """ @@ -599,7 +602,7 @@ def _get_or_create_user(self, force_populate=False): """ save_user = False - username = self.backend.ldap_to_django_username(self._username) + username = self.backend.get_django_username_from_ldap_user(self) self._user, built = self.backend.get_or_build_user(username, self) self._user.ldap_user = self diff --git a/tests/tests.py b/tests/tests.py index c321599e..9534195d 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -405,6 +405,17 @@ def django_to_ldap_username(self, username): self.assertEqual(user2.ldap_user._username, "alice") self.assertEqual(user2.ldap_username, "alice") + class MyBackend2(LDAPBackend): + def get_django_username_from_ldap_user(self, ldap_user): + return "ldap_%s" % ldap_user.attrs["sn"][0] + + backend = MyBackend2() + user = backend.authenticate(None, username="alice", password="password") + + self.assertEqual(user.username, "ldap_adams") + self.assertEqual(user1.ldap_user._username, "alice") + self.assertEqual(user1.ldap_username, "alice") + def test_search_bind(self): self._init_settings( USER_SEARCH=LDAPSearch(