Version 1.0.1 includes explicit version for lions-user-manager-server-api
dependency, fixing Maven resolution issues during CI/CD builds.
This resolves the 'version can neither be null, empty nor blank' error
when building with lionsctl pipeline.
Quarkus 3.x changed the packaging format from uber-jar (*-runner.jar)
to a multi-file quarkus-app directory structure.
Changes:
- Copy quarkus-app/lib/, app/, quarkus/ directories
- Use quarkus-run.jar as entrypoint instead of app.jar
- Maintains same runtime configuration and health checks
Fixes Docker build compatibility with Quarkus 3.15.1
## 🔴 CRITIQUES
1. Suppression du secret hardcodé du Dockerfile (KEYCLOAK_CLIENT_SECRET)
Les secrets doivent maintenant être injectés via Kubernetes Secrets
2. Configuration TLS sécurisée par défaut
- quarkus.oidc.tls.verification=required (au lieu de 'none')
- Prévient les attaques Man-in-the-Middle
- 'none' reste disponible uniquement en développement local
## 🟠 MAJEURES
- Ajout de annotationProcessorPaths pour Lombok dans maven-compiler-plugin
Assure la génération correcte des getters/setters/builders
## 📋 Contexte
Suite à l'audit de sécurité AUDIT_INTEGRAL_COMPLET_2025.md
Score avant: 5.6/10 - NE PAS DÉPLOYER EN PRODUCTION
Problèmes critiques identifiés et corrigés
## ⚠️ ACTION REQUISE
Créer le Kubernetes Secret avant déploiement:
kubectl create secret generic unionflow-client-secrets \
--namespace=applications \
--from-literal=keycloak-client-secret='...'
Voir: kubernetes/secrets/README.md
🤖 Generated with Claude Code
Ajout des configurations Quarkus Arc CDI manquantes en production
pour résoudre l'erreur BeanManager.getELResolver qui cause des 500 errors.
Configurations ajoutées:
- quarkus.arc.unremovable-types: Support des types JSF/CDI
- quarkus.arc.remove-unused-beans=false: Préservation des beans JSF
- quarkus.arc.detect-unused-false-positives=true: Support @ViewScoped
- quarkus.arc.auto-inject-fields=true: Support EL resolver pour #{bean.property}
Ces configurations existaient déjà dans application.properties (dev)
mais manquaient dans application-prod.properties.
Corrige: java.lang.UnsupportedOperationException at BeanManagerImpl.getELResolver
Corrections apportées:
1. Suppression de quarkus.oidc.authentication.redirect-path=/auth/callback
- Quarkus OIDC utilise maintenant son chemin par défaut: /q/oidc/code-flow/callback
- /auth/callback n'est pas une page métier et ne doit pas être utilisé
2. Changement du welcome-file de dashboard.xhtml vers index.xhtml
- dashboard.xhtml n'existe pas dans le répertoire racine
- index.xhtml est la page d'accueil publique avec contenu marketing
Ces changements corrigent:
- 403 Forbidden sur https://unionflow.lions.dev (mauvais welcome-file)
- 502/404 Bad Gateway sur /auth/callback (chemin de callback incorrect)
Le flux OAuth utilisera maintenant le chemin standard Quarkus OIDC.
Keycloak doit être mis à jour pour rediriger vers /q/oidc/code-flow/callback.
Quarkus OIDC needs explicit redirect-path configuration to handle the OAuth callback
from Keycloak at /auth/callback. Without this, the endpoint returns 404 Not Found
causing 502 Bad Gateway during authentication flow.
This fixes the OAuth callback 502 error after successful Keycloak authentication.
Cette migration corrige l'erreur java.lang.UnsupportedOperationException
at io.quarkus.arc.impl.BeanManagerImpl.getELResolver qui empêchait
le démarrage de l'application JSF/PrimeFaces sous Quarkus 3.15.1.
🔧 FICHIERS XML CORRIGÉS (javax → jakarta):
- web.xml: Jakarta EE 5.0 (suppression listeners WebBeans/ConfigureListener)
- primefaces-freya.taglib.xml: Jakarta EE 4.0
- unionflow.taglib.xml: Jakarta EE 4.0
- beans.xml: Jakarta EE 4.0
- faces-config.xml (WEB-INF): Jakarta EE 4.0
📝 FICHIERS JAVASCRIPT CORRIGÉS (4 fichiers):
- layout.js: PrimeFaces.ajax.RESOURCE = 'jakarta.faces.Resource'
(au lieu de javax.faces.Resource)
⚙️ CONFIGURATION QUARKUS ARC AJOUTÉE:
- quarkus.arc.unremovable-types: Support des types JSF/CDI
- quarkus.arc.remove-unused-beans=false: Préservation des beans JSF
- quarkus.arc.detect-unused-false-positives=true: Support @ViewScoped
- quarkus.arc.auto-inject-fields=true: Support EL resolver
✅ RÉSULTAT:
Arc CDI peut maintenant fournir correctement l'ELResolver à MyFaces,
permettant l'évaluation des expressions JSF #{bean.property} et le
démarrage normal de l'application.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Removed quarkus.oidc.authentication.redirect-path=/auth/callback
- Removed quarkus.oidc.authentication.redirect-uri explicit setting
- Changed cookie-same-site from strict to lax for OAuth compatibility
- Keycloak client updated with wildcard redirectUris: https://unionflow.lions.dev/*
This allows Quarkus OIDC to use its default callback paths instead of
the non-existent /auth/callback path that was causing 502 errors.
Fixes OAuth callback 502 Bad Gateway error.
Added force-redirect-https-scheme and explicit redirect-uri to fix
'Paramètre invalide : redirect_uri' error in Keycloak authentication.
Changes:
- quarkus.oidc.authentication.force-redirect-https-scheme=true
- quarkus.oidc.authentication.redirect-uri=https://unionflow.lions.dev/auth/callback
This ensures Quarkus OIDC uses the correct absolute URL for redirect
instead of constructing it from request headers (which may be incorrect
behind nginx ingress).
lionsctl pipeline generates manifests with port 8080 by default and doesn't
respect custom port configuration in .lionsctl.yaml. Changing the application
to use port 8080 fixes the health check failures.
Changes:
- application-prod.properties: quarkus.http.port=8080
- Dockerfile: EXPOSE 8080, HEALTHCHECK on port 8080
- .lionsctl.yaml: port 8080 in all configurations
This fixes the pod restart loop caused by liveness/readiness probes
checking port 8080 while the app was listening on port 8086.
- Ajout du Dockerfile avec configuration port 8086
- Configuration des variables d'environnement Keycloak et backend
- Ajout de .lionsctl.yaml avec domaine unionflow.lions.dev
- Health checks configurés pour le bon port (8086)
- Replicas: 1 comme demandé
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The exporterExcel method signature requires 11 parameters but was being
called with only 3. This caused a compilation error during deployment.
Fixed by providing all required parameters:
- format, associationId, statut, type
- dateAdhesionDebut, dateAdhesionFin
- colonnesExport
- inclureHeaders, formaterDates, inclureStatistiques
- motDePasse
Most parameters are set to null or default values for now.