mirror of https://github.com/jumpserver/jumpserver
fix: LDAP 自动创建的用户有多余的空格
parent
9fc1ae7b6d
commit
adf5c4a7b9
|
@ -27,6 +27,39 @@ class LDAPAuthorizationBackend(LDAPBackend):
|
||||||
is_valid = getattr(user, 'is_valid', None)
|
is_valid = getattr(user, 'is_valid', None)
|
||||||
return is_valid or is_valid is None
|
return is_valid or is_valid is None
|
||||||
|
|
||||||
|
def get_or_build_user(self, username, ldap_user):
|
||||||
|
"""
|
||||||
|
This must return a (User, built) 2-tuple for the given LDAP user.
|
||||||
|
|
||||||
|
username is the Django-friendly username of the user. ldap_user.dn is
|
||||||
|
the user's DN and ldap_user.attrs contains all of their LDAP
|
||||||
|
attributes.
|
||||||
|
|
||||||
|
The returned User object may be an unsaved model instance.
|
||||||
|
|
||||||
|
"""
|
||||||
|
model = self.get_user_model()
|
||||||
|
|
||||||
|
if self.settings.USER_QUERY_FIELD:
|
||||||
|
query_field = self.settings.USER_QUERY_FIELD
|
||||||
|
query_value = ldap_user.attrs[self.settings.USER_ATTR_MAP[query_field]][0]
|
||||||
|
query_value = query_value.strip()
|
||||||
|
lookup = query_field
|
||||||
|
else:
|
||||||
|
query_field = model.USERNAME_FIELD
|
||||||
|
query_value = username.lower()
|
||||||
|
lookup = "{}__iexact".format(query_field)
|
||||||
|
|
||||||
|
try:
|
||||||
|
user = model.objects.get(**{lookup: query_value})
|
||||||
|
except model.DoesNotExist:
|
||||||
|
user = model(**{query_field: query_value})
|
||||||
|
built = True
|
||||||
|
else:
|
||||||
|
built = False
|
||||||
|
|
||||||
|
return (user, built)
|
||||||
|
|
||||||
def pre_check(self, username, password):
|
def pre_check(self, username, password):
|
||||||
if not settings.AUTH_LDAP:
|
if not settings.AUTH_LDAP:
|
||||||
error = 'Not enabled auth ldap'
|
error = 'Not enabled auth ldap'
|
||||||
|
@ -128,6 +161,7 @@ class LDAPUser(_LDAPUser):
|
||||||
for field, attr in self.settings.USER_ATTR_MAP.items():
|
for field, attr in self.settings.USER_ATTR_MAP.items():
|
||||||
try:
|
try:
|
||||||
value = self.attrs[attr][0]
|
value = self.attrs[attr][0]
|
||||||
|
value = value.strip()
|
||||||
if attr.lower() == 'useraccountcontrol' \
|
if attr.lower() == 'useraccountcontrol' \
|
||||||
and field == 'is_active' and value:
|
and field == 'is_active' and value:
|
||||||
value = int(value) & LDAP_AD_ACCOUNT_DISABLE \
|
value = int(value) & LDAP_AD_ACCOUNT_DISABLE \
|
||||||
|
|
Loading…
Reference in New Issue