Add a way to construct django username from the _LDAPUser object #154
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
It seems like a fairly common scenario for an application to want to have the django username
constructed from the attributes loaded from ldap, rather than directly the ldap username as is currently allowed by the
ldap_to_django_username
hook.This doesn't include updating the docs - but I'll add that after review of the code, once the final form of how this functionality should be structured is known.
This is a backward compatible change to supercede the
ldap_to_django_username hook with get_django_username_from_ldap_user
which takes _LDAPUser instance as argument and returns the django
username.
By default it just calls ldap_to_django_username(ldap_user._username) to
be compatible with code that's based on older versions of this library
and expects ldap_to_django_username to be the function translating from
ldap username to django.
New code can now in their LDAPBackend subclasses override
get_django_username_from_ldap_user with potentially more sophisticated
logic that constructs the django username from information available
in the _LDAPUser object - typically from the attributes.