From b6204e23fd358b23c4aa8b84905cace847db1be5 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Fri, 18 Jul 2025 16:24:00 +0200 Subject: [PATCH 1/2] Compat with django-auth-ldap > 5 --- docker-compose.yml | 9 +++++++++ docker/Dockerfile.dev | 6 ++++-- modoboa/lib/authbackends.py | 11 ++++++----- pyproject.toml | 2 +- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index b05099c0a..7c11525f2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,6 +7,15 @@ services: volumes: - ./docker/redis:/data + ldap: + image: docker.pkg.github.com/modoboa/docker-openldap/docker-openldap + ports: + - 389/tcp + environment: + LDAP_DOMAIN: example.com + LDAP_ADMIN_PASSWORD: test + profiles: [ldap] + rq: build: context: . diff --git a/docker/Dockerfile.dev b/docker/Dockerfile.dev index d3219bddc..84410fbc9 100644 --- a/docker/Dockerfile.dev +++ b/docker/Dockerfile.dev @@ -11,21 +11,23 @@ RUN apk add --update openssl librrd python3-dev libffi-dev \ gcc g++ musl-dev libxml2-dev libxslt-dev \ libressl-dev jpeg-dev rrdtool-dev file make \ gettext freetype-dev cairo-dev cargo git \ + openldap-dev \ && rm -rf /var/cache/apk/* RUN python3 -m venv $VIRTUAL_ENV WORKDIR /tmp COPY . /tmp RUN python -m pip install -U pip pip-tools ruff RUN pip-compile --output-file=requirements.txt pyproject.toml +RUN pip-compile --extra=ldap --output-file=ldap-requirements.txt pyproject.toml RUN pip-compile --extra=dev --output-file=dev-requirements.txt pyproject.toml RUN pip-compile --extra=test --output-file=test-requirements.txt pyproject.toml -RUN pip install -r requirements.txt -r test-requirements.txt -r dev-requirements.txt +RUN pip install -r requirements.txt -r ldap-requirements.txt -r test-requirements.txt -r dev-requirements.txt FROM base AS run COPY docker/doveadm /usr/local/bin RUN chmod +x /usr/local/bin/doveadm COPY --from=build $VIRTUAL_ENV $VIRTUAL_ENV -RUN apk add --no-cache --update openssl librrd libxslt libjpeg libressl git rrdtool libmagic sudo sqlite \ +RUN apk add --no-cache --update openssl librrd libxslt libjpeg libressl git rrdtool libmagic sudo sqlite libldap \ && rm -rf /var/cache/apk/* RUN mkdir /code WORKDIR /code diff --git a/modoboa/lib/authbackends.py b/modoboa/lib/authbackends.py index 1711dbb82..e248c4b39 100644 --- a/modoboa/lib/authbackends.py +++ b/modoboa/lib/authbackends.py @@ -77,11 +77,12 @@ try: ldap_user.attrs contains all of their LDAP attributes. """ group = "SimpleUsers" - admin_groups = self.global_params["ldap_admin_groups"].split(";") - for grp in admin_groups: - if grp.strip() in ldap_user.group_names: - group = "DomainAdmins" - break + admin_groups = self.global_params["ldap_admin_groups"] + if admin_groups: + for grp in admin_groups.split(";"): + if grp.strip() in ldap_user.group_names: + group = "DomainAdmins" + break lpart, domain = split_mailbox(username) if domain is None: # Try to find associated email diff --git a/pyproject.toml b/pyproject.toml index fb2af69d6..102c6974b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -98,7 +98,7 @@ test = [ "testfixtures==8.3.0", "tox", ] -ldap = ["django-auth-ldap<5.0.0"] +ldap = ["django-auth-ldap<6.0.0"] [project.scripts] modoboa-cli = "modoboa:modoboa_admin" From 078f8e25e6f2b087602b427d794f4458dd627ac0 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Fri, 18 Jul 2025 16:36:52 +0200 Subject: [PATCH 2/2] Improve coverage --- modoboa/core/tests/test_ldap.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modoboa/core/tests/test_ldap.py b/modoboa/core/tests/test_ldap.py index 6cc7c116e..4e386f247 100644 --- a/modoboa/core/tests/test_ldap.py +++ b/modoboa/core/tests/test_ldap.py @@ -100,6 +100,12 @@ class LDAPAuthenticationTestCase(LDAPTestCaseMixin, ModoTestCase): def test_searchbind_authentication(self): """Test the bind&search method.""" self.searchbind_mode() + self.set_global_parameters( + { + "ldap_admin_groups": "", + "ldap_groups_search_base": "", + } + ) username = "testuser@example.com" self.authenticate(username, "test") self.check_created_user(username)