feat(server-impl): refactoring resources JAX-RS, corrections AuditService/SyncService/UserService, ajout entites Sync et scripts Docker
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
6
src/main/resources/META-INF/beans.xml
Normal file
6
src/main/resources/META-INF/beans.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="https://jakarta.ee/xml/ns/jakartajsf"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartajsf https://jakarta.ee/xml/ns/jakartajsf/beans_3_0.xsd"
|
||||
bean-discovery-mode="annotated">
|
||||
</beans>
|
||||
33
src/main/resources/META-INF/reflection-config.json
Normal file
33
src/main/resources/META-INF/reflection-config.json
Normal file
@@ -0,0 +1,33 @@
|
||||
[
|
||||
{
|
||||
"name": "dev.lions.user.manager.dto.realm.RealmAssignmentDTO",
|
||||
"allDeclaredFields": true,
|
||||
"allDeclaredMethods": true,
|
||||
"allDeclaredConstructors": true
|
||||
},
|
||||
{
|
||||
"name": "dev.lions.user.manager.dto.role.RoleDTO",
|
||||
"allDeclaredFields": true,
|
||||
"allDeclaredMethods": true,
|
||||
"allDeclaredConstructors": true
|
||||
},
|
||||
{
|
||||
"name": "dev.lions.user.manager.dto.role.RoleDTO$RoleCompositeDTO",
|
||||
"allDeclaredFields": true,
|
||||
"allDeclaredMethods": true,
|
||||
"allDeclaredConstructors": true
|
||||
},
|
||||
{
|
||||
"name": "dev.lions.user.manager.dto.user.UserDTO",
|
||||
"allDeclaredFields": true,
|
||||
"allDeclaredMethods": true,
|
||||
"allDeclaredConstructors": true
|
||||
},
|
||||
{
|
||||
"name": "dev.lions.user.manager.dto.user.UserSearchResultDTO",
|
||||
"allDeclaredFields": true,
|
||||
"allDeclaredMethods": true,
|
||||
"allDeclaredConstructors": true
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,105 +1,101 @@
|
||||
# ============================================================================
|
||||
# Lions User Manager Server - Configuration Développement
|
||||
# Lions User Manager - Server Implementation Configuration - DEV
|
||||
# ============================================================================
|
||||
# Ce fichier contient TOUTES les propriétés spécifiques au développement
|
||||
# Il surcharge et complète application.properties
|
||||
# Ce fichier contient UNIQUEMENT les propriétés spécifiques au DÉVELOPPEMENT
|
||||
# Il surcharge application.properties
|
||||
# ============================================================================
|
||||
|
||||
# ============================================
|
||||
# HTTP Configuration DEV
|
||||
# ============================================
|
||||
quarkus.http.port=8081
|
||||
|
||||
# CORS permissif en dev
|
||||
quarkus.http.cors.origins=*
|
||||
quarkus.http.host=localhost
|
||||
quarkus.http.cors.origins=http://localhost:3000,http://localhost:8080,http://localhost:8081,http://localhost:8082
|
||||
|
||||
# ============================================
|
||||
# Logging DEV (plus verbeux)
|
||||
# OIDC Configuration DEV
|
||||
# ============================================
|
||||
quarkus.log.level=DEBUG
|
||||
quarkus.log.category."dev.lions.user.manager".level=TRACE
|
||||
quarkus.log.category."org.keycloak".level=DEBUG
|
||||
quarkus.log.category."io.quarkus.oidc".level=DEBUG
|
||||
quarkus.log.category."io.quarkus.oidc.runtime".level=DEBUG
|
||||
quarkus.log.category."io.quarkus.security".level=DEBUG
|
||||
|
||||
quarkus.log.console.format=%d{HH:mm:ss} %-5p [%c{2.}] (%t) %s%e%n
|
||||
|
||||
# File Logging pour Audit (DEV)
|
||||
quarkus.log.file.path=logs/dev/lions-user-manager.log
|
||||
quarkus.log.file.rotation.max-backup-index=3
|
||||
|
||||
# ============================================
|
||||
# OIDC Configuration DEV - DÉSACTIVÉ PAR DÉFAUT
|
||||
# ============================================
|
||||
# En mode DEV, on désactive OIDC sur le backend pour simplifier le développement
|
||||
# Le client JSF est sécurisé, mais le backend accepte toutes les requêtes
|
||||
# ATTENTION: NE JAMAIS utiliser cette config en production !
|
||||
quarkus.oidc.enabled=false
|
||||
|
||||
# Alternative: Si vous voulez activer OIDC en dev (pour tester le flow complet),
|
||||
# commentez la ligne "quarkus.oidc.enabled=false" ci-dessus et décommentez ci-dessous:
|
||||
#
|
||||
# quarkus.oidc.enabled=true
|
||||
# quarkus.oidc.auth-server-url=http://localhost:8180/realms/lions-user-manager
|
||||
# quarkus.oidc.tls.verification=none
|
||||
# quarkus.oidc.token.issuer=http://localhost:8180/realms/lions-user-manager
|
||||
# quarkus.oidc.discovery-enabled=true
|
||||
# quarkus.oidc.token.audience=account
|
||||
# quarkus.oidc.verify-access-token=true
|
||||
# quarkus.oidc.roles.role-claim-path=realm_access/roles
|
||||
# quarkus.security.auth.enabled=true
|
||||
quarkus.oidc.enabled=true
|
||||
quarkus.oidc.auth-server-url=http://localhost:8180/realms/lions-user-manager
|
||||
quarkus.oidc.token.issuer=http://localhost:8180/realms/lions-user-manager
|
||||
quarkus.oidc.tls.verification=none
|
||||
|
||||
# ============================================
|
||||
# Keycloak Admin Client Configuration DEV
|
||||
# ============================================
|
||||
# Configuration pour accéder à l'API Admin de Keycloak local
|
||||
# IMPORTANT: L'utilisateur admin se trouve dans le realm "master", pas "lions-user-manager"
|
||||
lions.keycloak.server-url=http://localhost:8180
|
||||
lions.keycloak.admin-realm=master
|
||||
lions.keycloak.admin-client-id=admin-cli
|
||||
lions.keycloak.admin-username=admin
|
||||
lions.keycloak.admin-password=admin
|
||||
lions.keycloak.connection-pool-size=5
|
||||
lions.keycloak.timeout-seconds=30
|
||||
lions.keycloak.authorized-realms=lions-user-manager,master,btpxpress,test-realm
|
||||
|
||||
# Timeout augmenté pour Keycloak local (peut être lent au démarrage)
|
||||
lions.keycloak.timeout-seconds=60
|
||||
|
||||
# Realms autorisés en dev
|
||||
lions.keycloak.authorized-realms=lions-user-manager,btpxpress,master,unionflow
|
||||
# Quarkus-managed Keycloak Admin Client DEV
|
||||
quarkus.keycloak.admin-client.server-url=${lions.keycloak.server-url}
|
||||
quarkus.keycloak.admin-client.username=${lions.keycloak.admin-username}
|
||||
quarkus.keycloak.admin-client.password=${lions.keycloak.admin-password}
|
||||
|
||||
# ============================================
|
||||
# Audit Configuration DEV
|
||||
# ============================================
|
||||
lions.audit.log-to-database=false
|
||||
lions.audit.log-to-file=true
|
||||
lions.audit.retention-days=30
|
||||
|
||||
# ============================================
|
||||
# Database Configuration DEV
|
||||
# ============================================
|
||||
quarkus.datasource.health.enabled=false
|
||||
quarkus.datasource.username=${DB_USERNAME:skyfile}
|
||||
quarkus.datasource.password=${DB_PASSWORD:skyfile}
|
||||
quarkus.datasource.jdbc.url=jdbc:postgresql://${DB_HOST:localhost}:${DB_PORT:5432}/${DB_NAME:lions_user_manager_dev}
|
||||
|
||||
# ============================================
|
||||
# Hibernate ORM Configuration DEV
|
||||
# ============================================
|
||||
quarkus.hibernate-orm.database.generation=update
|
||||
quarkus.hibernate-orm.log.sql=true
|
||||
|
||||
# ============================================
|
||||
# Flyway Configuration DEV
|
||||
# ============================================
|
||||
quarkus.flyway.migrate-at-start=false
|
||||
|
||||
# ============================================
|
||||
# Logging Configuration DEV
|
||||
# ============================================
|
||||
quarkus.log.level=INFO
|
||||
quarkus.log.category."dev.lions.user.manager".level=DEBUG
|
||||
quarkus.log.category."dev.lions.user.manager.security".level=DEBUG
|
||||
quarkus.log.category."org.keycloak".level=INFO
|
||||
quarkus.log.category."io.quarkus".level=INFO
|
||||
quarkus.log.category."io.quarkus.oidc".level=INFO
|
||||
quarkus.log.category."io.quarkus.oidc.runtime".level=DEBUG
|
||||
quarkus.log.category."io.quarkus.security".level=DEBUG
|
||||
quarkus.log.category."io.quarkus.security.runtime".level=DEBUG
|
||||
|
||||
quarkus.log.console.enable=true
|
||||
quarkus.log.console.format=%d{HH:mm:ss} %-5p [%c{2.}] (%t) %s%e%n
|
||||
|
||||
# File Logging pour Audit DEV
|
||||
quarkus.log.file.enable=true
|
||||
quarkus.log.file.path=logs/dev/lions-user-manager.log
|
||||
quarkus.log.file.rotation.max-file-size=10M
|
||||
quarkus.log.file.rotation.max-backup-index=3
|
||||
|
||||
# ============================================
|
||||
# OpenAPI/Swagger Configuration DEV
|
||||
# ============================================
|
||||
quarkus.swagger-ui.always-include=true
|
||||
quarkus.swagger-ui.enable=true
|
||||
|
||||
# ============================================
|
||||
# Security Configuration DEV
|
||||
# Dev Services DEV
|
||||
# ============================================
|
||||
# Security désactivée en dev (car OIDC est désactivé)
|
||||
quarkus.security.auth.enabled=false
|
||||
quarkus.security.jaxrs.deny-unannotated-endpoints=false
|
||||
quarkus.security.auth.proactive=false
|
||||
|
||||
# Permissions HTTP - Accès public à tous les endpoints en DEV
|
||||
quarkus.http.auth.permission.public.paths=/api/*,/q/*,/health/*,/metrics,/swagger-ui/*,/openapi
|
||||
quarkus.http.auth.permission.public.policy=permit
|
||||
quarkus.devservices.enabled=false
|
||||
|
||||
# ============================================
|
||||
# Hot Reload et Dev Mode
|
||||
# Hot Reload DEV
|
||||
# ============================================
|
||||
quarkus.live-reload.instrumentation=true
|
||||
quarkus.test.continuous-testing=disabled
|
||||
quarkus.profile=dev
|
||||
|
||||
# ============================================
|
||||
# Indexation des dépendances Keycloak
|
||||
# ============================================
|
||||
quarkus.index-dependency.keycloak-admin.group-id=org.keycloak
|
||||
quarkus.index-dependency.keycloak-admin.artifact-id=keycloak-admin-client
|
||||
quarkus.index-dependency.keycloak-core.group-id=org.keycloak
|
||||
quarkus.index-dependency.keycloak-core.artifact-id=keycloak-core
|
||||
|
||||
@@ -1,66 +1,38 @@
|
||||
# ============================================================================
|
||||
# Lions User Manager Server - Configuration Production
|
||||
# Lions User Manager - Server Implementation Configuration - PROD
|
||||
# ============================================================================
|
||||
# Ce fichier contient TOUTES les propriétés spécifiques à la production
|
||||
# Il surcharge et complète application.properties
|
||||
# Ce fichier contient UNIQUEMENT les propriétés spécifiques à la PRODUCTION
|
||||
# Il surcharge application.properties
|
||||
# ============================================================================
|
||||
|
||||
# ============================================
|
||||
# HTTP Configuration PROD
|
||||
# ============================================
|
||||
quarkus.http.port=8080
|
||||
|
||||
# CORS restrictif en production (via variable d'environnement)
|
||||
quarkus.http.cors.origins=${CORS_ORIGINS:https://btpxpress.lions.dev,https://admin.lions.dev}
|
||||
quarkus.http.cors.origins=${CORS_ORIGINS:https://users.lions.dev,https://btpxpress.lions.dev,https://admin.lions.dev}
|
||||
|
||||
# ============================================
|
||||
# Logging PROD (moins verbeux)
|
||||
# ============================================
|
||||
quarkus.log.level=INFO
|
||||
quarkus.log.category."dev.lions.user.manager".level=INFO
|
||||
quarkus.log.category."org.keycloak".level=WARN
|
||||
|
||||
quarkus.log.console.format=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c{3.}] (%t) %s%e%n
|
||||
|
||||
# File Logging pour Audit (PROD)
|
||||
quarkus.log.file.path=/var/log/lions/lions-user-manager.log
|
||||
quarkus.log.file.rotation.max-file-size=50M
|
||||
quarkus.log.file.rotation.max-backup-index=30
|
||||
quarkus.log.file.rotation.rotate-on-boot=false
|
||||
|
||||
# ============================================
|
||||
# OIDC Configuration PROD - OBLIGATOIRE ET ACTIF
|
||||
# OIDC Configuration PROD
|
||||
# ============================================
|
||||
quarkus.oidc.enabled=true
|
||||
quarkus.oidc.auth-server-url=${KEYCLOAK_AUTH_SERVER_URL:https://security.lions.dev/realms/master}
|
||||
quarkus.oidc.credentials.secret=${KEYCLOAK_CLIENT_SECRET}
|
||||
quarkus.oidc.token.issuer=${KEYCLOAK_AUTH_SERVER_URL:https://security.lions.dev/realms/master}
|
||||
|
||||
# Vérification TLS requise en production
|
||||
quarkus.oidc.auth-server-url=${KEYCLOAK_AUTH_SERVER_URL:https://security.lions.dev/realms/lions-user-manager}
|
||||
quarkus.oidc.token.issuer=${KEYCLOAK_AUTH_SERVER_URL:https://security.lions.dev/realms/lions-user-manager}
|
||||
quarkus.oidc.tls.verification=required
|
||||
|
||||
# Vérification stricte des tokens
|
||||
quarkus.oidc.discovery-enabled=true
|
||||
quarkus.oidc.verify-access-token=true
|
||||
|
||||
# Extraction des rôles
|
||||
quarkus.oidc.roles.role-claim-path=realm_access/roles
|
||||
|
||||
# ============================================
|
||||
# Keycloak Admin Client Configuration PROD
|
||||
# ============================================
|
||||
lions.keycloak.server-url=${KEYCLOAK_SERVER_URL:https://security.lions.dev}
|
||||
lions.keycloak.admin-realm=${KEYCLOAK_ADMIN_REALM:master}
|
||||
lions.keycloak.admin-client-id=admin-cli
|
||||
lions.keycloak.admin-username=${KEYCLOAK_ADMIN_USERNAME}
|
||||
lions.keycloak.admin-password=${KEYCLOAK_ADMIN_PASSWORD}
|
||||
|
||||
# Pool de connexions augmenté en production
|
||||
lions.keycloak.connection-pool-size=20
|
||||
lions.keycloak.timeout-seconds=60
|
||||
lions.keycloak.authorized-realms=${KEYCLOAK_AUTHORIZED_REALMS:lions-user-manager,btpxpress,master,unionflow}
|
||||
|
||||
# Realms autorisés en production (via variable d'environnement)
|
||||
lions.keycloak.authorized-realms=${KEYCLOAK_AUTHORIZED_REALMS:btpxpress,master,unionflow}
|
||||
# Quarkus-managed Keycloak Admin Client PROD
|
||||
quarkus.keycloak.admin-client.server-url=${lions.keycloak.server-url}
|
||||
quarkus.keycloak.admin-client.username=${lions.keycloak.admin-username}
|
||||
quarkus.keycloak.admin-client.password=${lions.keycloak.admin-password}
|
||||
|
||||
# ============================================
|
||||
# Retry Configuration PROD
|
||||
@@ -71,40 +43,51 @@ lions.keycloak.retry.delay-seconds=3
|
||||
# ============================================
|
||||
# Audit Configuration PROD
|
||||
# ============================================
|
||||
lions.audit.retention-days=365
|
||||
lions.audit.log-to-database=true
|
||||
lions.audit.log-to-file=false
|
||||
lions.audit.retention-days=365
|
||||
|
||||
# ============================================
|
||||
# Database Configuration PROD (pour audit)
|
||||
# Database Configuration PROD
|
||||
# ============================================
|
||||
quarkus.datasource.db-kind=postgresql
|
||||
quarkus.datasource.username=${DB_USERNAME:audit_user}
|
||||
quarkus.datasource.health.enabled=true
|
||||
quarkus.datasource.username=${DB_USERNAME}
|
||||
quarkus.datasource.password=${DB_PASSWORD}
|
||||
quarkus.datasource.jdbc.url=jdbc:postgresql://${DB_HOST:lions-db.lions.svc.cluster.local}:${DB_PORT:5432}/${DB_NAME:lions_audit}
|
||||
quarkus.datasource.jdbc.max-size=20
|
||||
quarkus.datasource.jdbc.min-size=5
|
||||
quarkus.hibernate-orm.enabled=true
|
||||
quarkus.datasource.jdbc.url=jdbc:postgresql://${DB_HOST}:${DB_PORT:5432}/${DB_NAME:lions_user_manager}
|
||||
|
||||
# ============================================
|
||||
# Hibernate ORM Configuration PROD
|
||||
# ============================================
|
||||
quarkus.hibernate-orm.database.generation=none
|
||||
quarkus.hibernate-orm.log.sql=false
|
||||
|
||||
# ============================================
|
||||
# Flyway Configuration PROD
|
||||
# ============================================
|
||||
quarkus.flyway.migrate-at-start=true
|
||||
quarkus.flyway.baseline-on-migrate=true
|
||||
quarkus.flyway.baseline-version=1.0.0
|
||||
|
||||
# ============================================
|
||||
# Logging Configuration PROD
|
||||
# ============================================
|
||||
quarkus.log.level=INFO
|
||||
quarkus.log.category."dev.lions.user.manager".level=INFO
|
||||
quarkus.log.category."org.keycloak".level=WARN
|
||||
quarkus.log.category."io.quarkus".level=INFO
|
||||
|
||||
quarkus.log.console.enable=true
|
||||
quarkus.log.console.format=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c{3.}] (%t) %s%e%n
|
||||
|
||||
# File Logging désactivé en PROD (logs centralisés via Kubernetes)
|
||||
quarkus.log.file.enable=false
|
||||
|
||||
# ============================================
|
||||
# OpenAPI/Swagger Configuration PROD
|
||||
# ============================================
|
||||
# Swagger désactivé en production par défaut
|
||||
quarkus.swagger-ui.always-include=false
|
||||
quarkus.swagger-ui.enable=false
|
||||
|
||||
# ============================================
|
||||
# Security Configuration PROD (strict)
|
||||
# ============================================
|
||||
quarkus.security.auth.enabled=true
|
||||
quarkus.security.jaxrs.deny-unannotated-endpoints=true
|
||||
quarkus.security.auth.proactive=true
|
||||
|
||||
# ============================================
|
||||
# Performance tuning PROD
|
||||
# Performance Tuning PROD
|
||||
# ============================================
|
||||
quarkus.thread-pool.core-threads=4
|
||||
quarkus.thread-pool.max-threads=32
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
# ============================================================================
|
||||
# Lions User Manager Server - Configuration Commune
|
||||
# Lions User Manager - Server Implementation Configuration (COMMUNE)
|
||||
# ============================================================================
|
||||
# Ce fichier contient UNIQUEMENT la configuration commune à tous les environnements
|
||||
# Les configurations spécifiques sont dans:
|
||||
# - application-dev.properties (développement)
|
||||
# - application-prod.properties (production)
|
||||
# Ce fichier contient UNIQUEMENT les propriétés COMMUNES à tous les environnements
|
||||
# Les propriétés spécifiques dev/prod vont dans application-dev.properties et application-prod.properties
|
||||
# ============================================================================
|
||||
|
||||
# ============================================
|
||||
# Application Info
|
||||
# Application Info (COMMUNE)
|
||||
# ============================================
|
||||
quarkus.application.name=lions-user-manager-server
|
||||
quarkus.application.version=1.0.0
|
||||
|
||||
# ============================================
|
||||
# HTTP Configuration (commune)
|
||||
# HTTP Configuration (COMMUNE)
|
||||
# ============================================
|
||||
quarkus.http.host=0.0.0.0
|
||||
quarkus.http.cors=true
|
||||
@@ -22,54 +20,49 @@ quarkus.http.cors.methods=GET,POST,PUT,DELETE,PATCH,OPTIONS
|
||||
quarkus.http.cors.headers=*
|
||||
|
||||
# ============================================
|
||||
# Keycloak OIDC Configuration (base commune)
|
||||
# OIDC Configuration (COMMUNE)
|
||||
# ============================================
|
||||
quarkus.oidc.application-type=service
|
||||
quarkus.oidc.discovery-enabled=true
|
||||
quarkus.oidc.roles.role-claim-path=realm_access/roles
|
||||
quarkus.oidc.token.audience=account
|
||||
|
||||
# ============================================
|
||||
# Keycloak Admin Client Configuration (base commune)
|
||||
# Keycloak Admin Client (COMMUNE)
|
||||
# ============================================
|
||||
lions.keycloak.connection-pool-size=10
|
||||
lions.keycloak.timeout-seconds=30
|
||||
lions.keycloak.admin-realm=master
|
||||
lions.keycloak.admin-client-id=admin-cli
|
||||
|
||||
# Retry Configuration (pour appels Keycloak)
|
||||
# Quarkus-managed Keycloak Admin Client (uses Quarkus ObjectMapper with fail-on-unknown-properties=false)
|
||||
quarkus.keycloak.admin-client.realm=${lions.keycloak.admin-realm}
|
||||
quarkus.keycloak.admin-client.client-id=${lions.keycloak.admin-client-id}
|
||||
quarkus.keycloak.admin-client.grant-type=PASSWORD
|
||||
|
||||
# ============================================
|
||||
# Retry Configuration (COMMUNE)
|
||||
# ============================================
|
||||
lions.keycloak.retry.max-attempts=3
|
||||
lions.keycloak.retry.delay-seconds=2
|
||||
|
||||
# ============================================
|
||||
# Audit Configuration
|
||||
# Audit Configuration (COMMUNE)
|
||||
# ============================================
|
||||
lions.audit.enabled=true
|
||||
lions.audit.log-to-database=false
|
||||
lions.audit.log-to-file=true
|
||||
lions.audit.retention-days=90
|
||||
|
||||
# ============================================
|
||||
# Database Configuration (désactivé par défaut)
|
||||
# Database Configuration (COMMUNE)
|
||||
# ============================================
|
||||
# Désactiver Hibernate ORM si aucune entité JPA n'est utilisée
|
||||
quarkus.hibernate-orm.enabled=false
|
||||
quarkus.datasource.db-kind=postgresql
|
||||
quarkus.datasource.devservices.enabled=false
|
||||
|
||||
# ============================================
|
||||
# Logging Configuration (base commune)
|
||||
# Flyway Configuration (COMMUNE)
|
||||
# ============================================
|
||||
quarkus.log.level=INFO
|
||||
quarkus.log.category."dev.lions.user.manager".level=DEBUG
|
||||
quarkus.log.category."org.keycloak".level=WARN
|
||||
|
||||
quarkus.log.console.enable=true
|
||||
quarkus.log.console.format=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c{3.}] (%t) %s%e%n
|
||||
|
||||
# File Logging pour Audit
|
||||
quarkus.log.file.enable=true
|
||||
quarkus.log.file.path=logs/lions-user-manager.log
|
||||
quarkus.log.file.rotation.max-file-size=10M
|
||||
quarkus.log.file.rotation.max-backup-index=10
|
||||
# Migration manuelle en production, vérifier avant d'activer
|
||||
|
||||
# ============================================
|
||||
# OpenAPI/Swagger Configuration
|
||||
# OpenAPI/Swagger Configuration (COMMUNE)
|
||||
# ============================================
|
||||
quarkus.swagger-ui.always-include=true
|
||||
mp.openapi.extensions.smallrye.info.title=Lions User Manager API
|
||||
mp.openapi.extensions.smallrye.info.version=1.0.0
|
||||
mp.openapi.extensions.smallrye.info.description=API de gestion centralisée des utilisateurs Keycloak
|
||||
@@ -77,32 +70,35 @@ mp.openapi.extensions.smallrye.info.contact.name=Lions Dev Team
|
||||
mp.openapi.extensions.smallrye.info.contact.email=contact@lions.dev
|
||||
|
||||
# ============================================
|
||||
# Health Check Configuration
|
||||
# Health Check Configuration (COMMUNE)
|
||||
# ============================================
|
||||
quarkus.smallrye-health.root-path=/health
|
||||
quarkus.smallrye-health.liveness-path=/health/live
|
||||
quarkus.smallrye-health.readiness-path=/health/ready
|
||||
|
||||
# ============================================
|
||||
# Metrics Configuration
|
||||
# Metrics Configuration (COMMUNE)
|
||||
# ============================================
|
||||
quarkus.micrometer.enabled=true
|
||||
quarkus.micrometer.export.prometheus.enabled=true
|
||||
quarkus.micrometer.export.prometheus.path=/metrics
|
||||
|
||||
# ============================================
|
||||
# Security Configuration
|
||||
# Security Configuration (COMMUNE)
|
||||
# ============================================
|
||||
quarkus.security.jaxrs.deny-unannotated-endpoints=false
|
||||
|
||||
# ============================================
|
||||
# Jackson Configuration
|
||||
# Jackson Configuration (COMMUNE)
|
||||
# ============================================
|
||||
quarkus.jackson.fail-on-unknown-properties=false
|
||||
quarkus.jackson.write-dates-as-timestamps=false
|
||||
quarkus.jackson.serialization-inclusion=non_null
|
||||
|
||||
# ============================================
|
||||
# Dev Services (désactivé par défaut)
|
||||
# Indexing (COMMUNE - pour Keycloak)
|
||||
# ============================================
|
||||
quarkus.devservices.enabled=false
|
||||
quarkus.index-dependency.keycloak-admin.group-id=org.keycloak
|
||||
quarkus.index-dependency.keycloak-admin.artifact-id=keycloak-admin-client
|
||||
quarkus.index-dependency.keycloak-core.group-id=org.keycloak
|
||||
quarkus.index-dependency.keycloak-core.artifact-id=keycloak-core
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
-- =============================================================================
|
||||
-- Migration Flyway V2.0.0 - Création des tables de synchronisation Keycloak
|
||||
-- =============================================================================
|
||||
-- Description: Tables pour la persistance des snapshots et de l'historique
|
||||
-- des synchronisations entre l'application et Keycloak.
|
||||
--
|
||||
-- Entités correspondantes:
|
||||
-- SyncHistoryEntity → sync_history
|
||||
-- SyncedUserEntity → synced_user
|
||||
-- SyncedRoleEntity → synced_role
|
||||
--
|
||||
-- Auteur: Lions Development Team
|
||||
-- Date: 2026-02-17
|
||||
-- Version: 2.0.0
|
||||
-- =============================================================================
|
||||
|
||||
|
||||
-- =============================================================================
|
||||
-- TABLE sync_history : historique des opérations de synchronisation
|
||||
-- =============================================================================
|
||||
CREATE TABLE IF NOT EXISTS sync_history (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
realm_name VARCHAR(255) NOT NULL,
|
||||
sync_date TIMESTAMP NOT NULL,
|
||||
sync_type VARCHAR(50) NOT NULL, -- 'USER' ou 'ROLE'
|
||||
status VARCHAR(50) NOT NULL, -- 'SUCCESS' ou 'FAILURE'
|
||||
items_processed INTEGER,
|
||||
duration_ms BIGINT,
|
||||
error_message TEXT
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_sync_realm ON sync_history(realm_name);
|
||||
CREATE INDEX IF NOT EXISTS idx_sync_date ON sync_history(sync_date DESC);
|
||||
|
||||
COMMENT ON TABLE sync_history IS 'Historique des synchronisations Keycloak (users et rôles)';
|
||||
COMMENT ON COLUMN sync_history.sync_type IS 'Type de synchronisation : USER ou ROLE';
|
||||
COMMENT ON COLUMN sync_history.status IS 'Résultat : SUCCESS ou FAILURE';
|
||||
|
||||
|
||||
-- =============================================================================
|
||||
-- TABLE synced_user : snapshot local des utilisateurs Keycloak synchronisés
|
||||
-- =============================================================================
|
||||
CREATE TABLE IF NOT EXISTS synced_user (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
realm_name VARCHAR(255) NOT NULL,
|
||||
keycloak_id VARCHAR(255) NOT NULL,
|
||||
username VARCHAR(255) NOT NULL,
|
||||
email VARCHAR(255),
|
||||
enabled BOOLEAN,
|
||||
email_verified BOOLEAN,
|
||||
created_at TIMESTAMP,
|
||||
CONSTRAINT uq_synced_user_realm_kc UNIQUE (realm_name, keycloak_id)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_synced_user_realm
|
||||
ON synced_user(realm_name);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_synced_user_realm_kc_id
|
||||
ON synced_user(realm_name, keycloak_id);
|
||||
|
||||
COMMENT ON TABLE synced_user IS 'Snapshot local des utilisateurs Keycloak pour rapports et vérifications';
|
||||
COMMENT ON COLUMN synced_user.keycloak_id IS 'UUID Keycloak de l''utilisateur';
|
||||
|
||||
|
||||
-- =============================================================================
|
||||
-- TABLE synced_role : snapshot local des rôles Keycloak synchronisés
|
||||
-- =============================================================================
|
||||
CREATE TABLE IF NOT EXISTS synced_role (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
realm_name VARCHAR(255) NOT NULL,
|
||||
role_name VARCHAR(255) NOT NULL,
|
||||
description VARCHAR(500),
|
||||
CONSTRAINT uq_synced_role_realm_name UNIQUE (realm_name, role_name)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_synced_role_realm
|
||||
ON synced_role(realm_name);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_synced_role_realm_name
|
||||
ON synced_role(realm_name, role_name);
|
||||
|
||||
COMMENT ON TABLE synced_role IS 'Snapshot local des rôles Keycloak pour rapports et vérifications';
|
||||
COMMENT ON COLUMN synced_role.role_name IS 'Nom du rôle realm dans Keycloak';
|
||||
|
||||
-- =============================================================================
|
||||
-- FIN DE LA MIGRATION
|
||||
-- =============================================================================
|
||||
Reference in New Issue
Block a user