From afe3253fc8f37749943af2a4e2827028a59889ed Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Wed, 27 Nov 2024 10:42:45 +0100 Subject: [PATCH] WIP: frontend module federation setup. Initial work to accept future user related apps. --- .gitignore | 1 + docker-compose.yml | 9 +- docker/Dockerfile.dev | 5 +- frontend/src/api/account.js | 3 + frontend/src/components/shared/AppsMenu.vue | 3 + frontend/src/components/shared/TopMenu.vue | 109 ++++++++++++++++++++ frontend/src/components/shared/UserMenu.vue | 4 +- frontend/src/layouts/dashboard/NavBar.vue | 26 ++++- frontend/vite.config.js | 5 +- modoboa/core/api/v2/serializers.py | 9 ++ modoboa/core/api/v2/viewsets.py | 24 +++++ modoboa/core/extensions.py | 41 +++++--- test_project/test_project/settings.py | 2 + 13 files changed, 217 insertions(+), 24 deletions(-) create mode 100644 frontend/src/components/shared/AppsMenu.vue create mode 100644 frontend/src/components/shared/TopMenu.vue diff --git a/.gitignore b/.gitignore index 09ebf86ce..6bfe34914 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ node_modules /static/dist /frontend/webpack-stats.json /frontend/src/translations.json +/frontend/.__mf__temp/ # TOX stuff test_project/modoboa.db diff --git a/docker-compose.yml b/docker-compose.yml index d26b288c5..b5aed85e7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,14 +9,15 @@ services: context: . dockerfile: docker/Dockerfile.dev environment: - PYTHONPATH: ".." DB: "SQLITE" DEBUG: "True" REDIS_HOST: redis + PYTHONPATH: "..:/modoboa_user" command: > sh -c "cd test_project; python3 manage.py rqworker dkim modoboa" volumes: - .:/code + - ../modoboa-user:/modoboa_user api: container_name: modoboa_api @@ -29,10 +30,10 @@ services: env_file: - test_project/oidc_key environment: - PYTHONPATH: ".." DB: "SQLITE" DEBUG: "True" REDIS_HOST: redis + PYTHONPATH: "..:/modoboa_user" command: > sh -c "cd test_project python3 manage.py migrate @@ -41,6 +42,7 @@ services: python3 manage.py runserver_plus 0.0.0.0:8000 --cert-file cert.crt" volumes: - .:/code + - ../modoboa-user:/modoboa_user api-unsecured: container_name: modoboa_api_unsecured @@ -53,15 +55,16 @@ services: env_file: - test_project/oidc_key environment: - PYTHONPATH: ".." DB: "SQLITE" DEBUG: "True" REDIS_HOST: redis + PYTHONPATH: "..:/modoboa_user" command: > sh -c "cd test_project python3 manage.py runserver_plus 0.0.0.0:8001" volumes: - .:/code + - ../modoboa-user:/modoboa_user front: container_name: modoboa_front diff --git a/docker/Dockerfile.dev b/docker/Dockerfile.dev index 59773d207..3f41f171f 100644 --- a/docker/Dockerfile.dev +++ b/docker/Dockerfile.dev @@ -1,6 +1,7 @@ FROM python:3.12-alpine3.20 AS base LABEL org.opencontainers.image.authors="Antoine Nguyen " + ENV VIRTUAL_ENV=/opt/venv ENV PATH="$VIRTUAL_ENV/bin:$PATH" @@ -12,11 +13,11 @@ RUN apk add --update openssl librrd python3-dev libffi-dev gcc g++ musl-dev libx RUN python3 -m venv $VIRTUAL_ENV WORKDIR /tmp COPY requirements.txt /tmp +COPY user-requirements.txt /tmp COPY test-requirements.txt /tmp COPY dev-requirements.txt /tmp RUN python -m pip install -U pip -RUN pip install -r requirements.txt -r test-requirements.txt -r dev-requirements.txt - +RUN pip install -r requirements.txt -r user-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 diff --git a/frontend/src/api/account.js b/frontend/src/api/account.js index 1375c2436..e0782641f 100644 --- a/frontend/src/api/account.js +++ b/frontend/src/api/account.js @@ -114,4 +114,7 @@ export default { `${resource}/filtersets/${filterSetName}/filters/${filter}/` ) }, + getAvailableApplications() { + return repository.get(`${resource}/available_applications/`) + }, } diff --git a/frontend/src/components/shared/AppsMenu.vue b/frontend/src/components/shared/AppsMenu.vue new file mode 100644 index 000000000..c0ca32f9a --- /dev/null +++ b/frontend/src/components/shared/AppsMenu.vue @@ -0,0 +1,3 @@ + diff --git a/frontend/src/components/shared/TopMenu.vue b/frontend/src/components/shared/TopMenu.vue new file mode 100644 index 000000000..593acdc0c --- /dev/null +++ b/frontend/src/components/shared/TopMenu.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/frontend/src/components/shared/UserMenu.vue b/frontend/src/components/shared/UserMenu.vue index c44db702b..805e1a5ef 100644 --- a/frontend/src/components/shared/UserMenu.vue +++ b/frontend/src/components/shared/UserMenu.vue @@ -1,5 +1,5 @@