diff --git a/portal/service/users.py b/portal/service/users.py index a17e1f63cd59c2488744e711bb5560927be2787e..9c808869f6c05610f9a0ac98a5abd647d25b6586 100644 --- a/portal/service/users.py +++ b/portal/service/users.py @@ -50,10 +50,11 @@ def ldap_get_uco_for_user(username: str) -> int: """ user_dict = ldap_wrapper.search_dict(f"uid={username},ou=People") + log.debug(f"[LDAP] User ({username}): {user_dict}") if not user_dict: return 0 desc = user_dict[0]['description'] - uco = [str(u) for u in desc if str(u).startswith('UCO=')] + uco = [u.decode('utf-8') for u in desc if u.decode('utf-8').startswith('UCO=')] if not uco: return 0 return int(uco[0][4:]) diff --git a/portal/tools/ldap_client.py b/portal/tools/ldap_client.py index c69d5618428b62a8cd44789d05254f5ec6bf6088..126d7d333b6c5060b49243951b2ddecbfab93484 100644 --- a/portal/tools/ldap_client.py +++ b/portal/tools/ldap_client.py @@ -52,12 +52,14 @@ class LDAPWrapper(object): Returns(LDAPObject): LDAP Object instance """ if not self._ldap_client and self.is_enabled: - self._ldap_client = ldap.initialize(self.ldap_url) + self._ldap_client = ldap.initialize(self.ldap_url, bytes_mode=False) return self._ldap_client def search(self, selector: str): selector = selector + self.selector_base - return self.ldap.search_s(selector, ldap.SCOPE_SUBTREE, "objectclass=*") + result = self.ldap.search_s(selector, ldap.SCOPE_SUBTREE, "objectclass=*") + log.debug(f"[LDAP] Search ({selector}): {result}") + return result def search_dict(self, *args, **kwargs): l_res = self.search(*args, **kwargs)