+
{ project.description = desc }"
+ :can-edit-description="
+ asProfile === 'user'
+ && ProjectAuthorized.Manage({ projectPermissions: project.myPerms })
+ "
+ @update:model-value="
+ (desc: string | undefined) => {
+ project.description = desc;
+ }
+ "
@save-description="saveProject"
/>
-
+
-
+
-
+
Vous n'avez pas les permissions pour afficher ces ressources
-
+
-
+
-
+
diff --git a/apps/nginx-strangler/Dockerfile b/apps/nginx-strangler/Dockerfile
index 30e3447dad..66a1c1fd51 100644
--- a/apps/nginx-strangler/Dockerfile
+++ b/apps/nginx-strangler/Dockerfile
@@ -1,36 +1,13 @@
-FROM nginx:1.27-alpine AS prod
+FROM docker.io/bitnamilegacy/nginx:1.29.1 AS prod
-# envsubst est inclus dans nginx:alpine via le paquet gettext
-# On supprime la config par défaut
-RUN rm /etc/nginx/conf.d/default.conf
-
-# Config principale
-COPY apps/nginx-strangler/nginx.conf /etc/nginx/nginx.conf
+USER 0
# Template de routing (sera substitué au démarrage)
-COPY apps/nginx-strangler/conf.d/routing.conf /etc/nginx/templates/routing.conf.template
-
-# Donner à l'utilisateur nginx les droits d'écriture sur conf.d/ (pour envsubst au démarrage)
-# et sur les répertoires de logs/pid nécessaires en mode non-root
-RUN chown -R nginx:nginx \
- /etc/nginx/nginx.conf \
- /etc/nginx/conf.d \
- /etc/nginx/templates \
- /etc/nginx/mime.types \
- /var/cache/nginx \
- /var/log/nginx \
- && touch /var/run/nginx.pid \
- && chown nginx:nginx /var/run/nginx.pid
-
-USER nginx
+COPY --chown=1001:0 --chmod=660 apps/nginx-strangler/conf.d/routing.conf /opt/bitnami/nginx/conf/server_blocks/routing.conf.template
-HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \
- CMD wget -qO- http://127.0.0.1:8080/health || exit 1
+# Script d'entrypoint pour substitution des variables
+COPY --chown=1001:0 --chmod=770 apps/nginx-strangler/entrypoint.sh /docker-entrypoint-initdb.d/load-routing.sh
-# Entrypoint : envsubst substitue les variables d'env dans les templates,
-# puis démarre nginx en foreground
-# Les variables substituées : LEGACY_UPSTREAM, NESTJS_UPSTREAM
-CMD ["/bin/sh", "-c", \
- "envsubst '${LEGACY_UPSTREAM} ${NESTJS_UPSTREAM}' < /etc/nginx/templates/routing.conf.template > /etc/nginx/conf.d/routing.conf && nginx -t && nginx -g 'daemon off;'"]
+USER 1001
EXPOSE 8080
diff --git a/apps/nginx-strangler/conf.d/routing.conf b/apps/nginx-strangler/conf.d/routing.conf
index a5ffb7e09f..b22fa3216f 100644
--- a/apps/nginx-strangler/conf.d/routing.conf
+++ b/apps/nginx-strangler/conf.d/routing.conf
@@ -31,6 +31,10 @@ upstream server-nestjs {
server {
listen 8080;
+ # Taille des headers (nécessaire pour les tokens Keycloak)
+ large_client_header_buffers 4 32k;
+
+
# ── Routes migrées vers NestJS ────────────────────────────────────────────
# (vide au démarrage — toutes les routes sont en fallback sur server-legacy)
#
diff --git a/apps/nginx-strangler/entrypoint.sh b/apps/nginx-strangler/entrypoint.sh
new file mode 100644
index 0000000000..19a234e2e6
--- /dev/null
+++ b/apps/nginx-strangler/entrypoint.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+# Substitue les variables d'environnement dans le template de routing
+# Les variables substituées : LEGACY_UPSTREAM, NESTJS_UPSTREAM
+envsubst '${LEGACY_UPSTREAM} ${NESTJS_UPSTREAM}' \
+ < /opt/bitnami/nginx/conf/server_blocks/routing.conf.template \
+ > /opt/bitnami/nginx/conf/server_blocks/routing.conf
+
+echo "Routing configuration generated with:"
+echo " LEGACY_UPSTREAM=${LEGACY_UPSTREAM}"
+echo " NESTJS_UPSTREAM=${NESTJS_UPSTREAM}"
diff --git a/apps/nginx-strangler/nginx.conf b/apps/nginx-strangler/nginx.conf
deleted file mode 100644
index 657e2100dd..0000000000
--- a/apps/nginx-strangler/nginx.conf
+++ /dev/null
@@ -1,28 +0,0 @@
-worker_processes auto;
-
-error_log /var/log/nginx/error.log notice;
-pid /var/run/nginx.pid;
-
-events {
- worker_connections 1024;
-}
-
-http {
- include /etc/nginx/mime.types;
- default_type application/octet-stream;
-
- log_format main '$remote_addr - $remote_user [$time_local] "$request" '
- '$status $body_bytes_sent "$http_referer" '
- '"$http_user_agent" "$http_x_forwarded_for" '
- 'upstream=$upstream_addr rt=$request_time';
-
- access_log /var/log/nginx/access.log main;
-
- sendfile on;
- keepalive_timeout 65;
-
- # Taille des headers (nécessaire pour les tokens Keycloak)
- large_client_header_buffers 4 32k;
-
- include /etc/nginx/conf.d/*.conf;
-}
diff --git a/package.json b/package.json
index 1b15e392ec..0ce659388f 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "@cpn-console/root",
"type": "module",
- "version": "9.16.1",
+ "version": "9.16.3",
"private": true,
"packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319",
"repository": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 920f2aca05..b77412182e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -141,6 +141,9 @@ importers:
chalk:
specifier: ^5.6.2
version: 5.6.2
+ eslint:
+ specifier: ^10.1.0
+ version: 10.1.0(jiti@2.6.1)
eslint-plugin-vue:
specifier: ^10.8.0
version: 10.8.0(@stylistic/eslint-plugin@5.10.0(eslint@10.1.0(jiti@2.6.1)))(@typescript-eslint/parser@8.57.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.1.0(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.1.0(jiti@2.6.1)))