portalapi: tweak ldap management to handle anonymous queries, eg to fetch domain list as ynh-portal

This commit is contained in:
Alexandre Aubin 2023-11-13 15:31:08 +01:00
parent 7fe950d11e
commit 587d729d60

View file

@ -39,7 +39,7 @@ def _get_ldap_interface():
global _ldap_interface global _ldap_interface
if _ldap_interface is None: if _ldap_interface is None:
_ldap_interface = LDAPInterface(user="root") _ldap_interface = LDAPInterface()
return _ldap_interface return _ldap_interface
@ -76,12 +76,17 @@ USERDN = "uid={username},ou=users,dc=yunohost,dc=org"
class LDAPInterface: class LDAPInterface:
def __init__(self, user="root", password=None): def __init__(self, user=None, password=None):
if user == "root": if user is None:
logger.debug("initializing root ldap interface") if os.getuid() == 0:
self.userdn = ROOTDN logger.debug(f"initializing root ldap interface")
self._connect = lambda con: con.sasl_non_interactive_bind_s("EXTERNAL") self.userdn = ROOTDN
self._connect = lambda con: con.sasl_non_interactive_bind_s("EXTERNAL")
else:
logger.debug(f"initializing anonymous ldap interface")
self.userdn = ""
self._connect = lambda con: None
else: else:
logger.debug("initializing user ldap interface") logger.debug("initializing user ldap interface")
self.userdn = USERDN.format(username=user) self.userdn = USERDN.format(username=user)