Migration complète vers PrimeFaces Freya - Corrections des incompatibilités et intégration de primefaces-freya-extension

This commit is contained in:
lionsdev
2025-12-27 00:18:31 +00:00
parent 5e272a8256
commit 5c996931a6
206 changed files with 36646 additions and 1593 deletions

View File

@@ -0,0 +1,214 @@
#!/usr/bin/env pwsh
<#
.SYNOPSIS
Script pour configurer la base de données PostgreSQL en production
.DESCRIPTION
Ce script configure PostgreSQL pour Lions User Manager :
- Création de la base de données lions_audit
- Création de l'utilisateur lions_audit_user
- Octroi des privilèges
.PARAMETER VpsHost
Host SSH du VPS (ex: lions@176.57.150.2)
.PARAMETER Namespace
Namespace Kubernetes pour PostgreSQL (défaut: postgresql)
.PARAMETER PostgresUser
Utilisateur PostgreSQL (défaut: lionsuser)
.PARAMETER DatabaseName
Nom de la base de données (défaut: lions_audit)
.PARAMETER DatabaseUser
Nom de l'utilisateur de la base (défaut: lions_audit_user)
.PARAMETER DatabasePassword
Mot de passe pour l'utilisateur de la base
.EXAMPLE
.\setup-database-production.ps1 -VpsHost "lions@176.57.150.2" -DatabasePassword "strong-password-123"
#>
param(
[Parameter(Mandatory=$true)]
[string]$VpsHost,
[Parameter(Mandatory=$false)]
[string]$Namespace = "postgresql",
[Parameter(Mandatory=$false)]
[string]$PostgresUser = "lionsuser",
[Parameter(Mandatory=$false)]
[string]$DatabaseName = "lions_audit",
[Parameter(Mandatory=$false)]
[string]$DatabaseUser = "lions_audit_user",
[Parameter(Mandatory=$true)]
[string]$DatabasePassword
)
$ErrorActionPreference = "Stop"
# Couleurs
function Write-Success { Write-Host "$args" -ForegroundColor Green }
function Write-Info { Write-Host " $args" -ForegroundColor Cyan }
function Write-Warning { Write-Host "⚠️ $args" -ForegroundColor Yellow }
function Write-Error { Write-Host "$args" -ForegroundColor Red }
function Write-Step { Write-Host "`n🚀 $args" -ForegroundColor Magenta }
Write-Host @"
🗄 CONFIGURATION BASE DE DONNÉES PRODUCTION 🗄
"@ -ForegroundColor Cyan
Write-Info "VPS Host: $VpsHost"
Write-Info "Namespace: $Namespace"
Write-Info "Database: $DatabaseName"
Write-Info "Database User: $DatabaseUser"
Write-Info ""
# 1. Trouver le pod PostgreSQL
Write-Step "1. Recherche du pod PostgreSQL..."
$getPodCmd = "kubectl get pods -n $Namespace -o jsonpath='{.items[0].metadata.name}'"
try {
$POSTGRES_POD = ssh.exe $VpsHost $getPodCmd
if ([string]::IsNullOrEmpty($POSTGRES_POD)) {
Write-Error "Aucun pod PostgreSQL trouvé dans le namespace $Namespace"
exit 1
}
Write-Success "Pod PostgreSQL trouvé: $POSTGRES_POD"
} catch {
Write-Error "Erreur lors de la recherche du pod: $($_.Exception.Message)"
exit 1
}
# 2. Lister les bases de données existantes
Write-Step "2. Liste des bases de données existantes..."
$listDbCmd = "kubectl exec -n $Namespace $POSTGRES_POD -- psql -U $PostgresUser -d postgres -c '\l'"
try {
ssh.exe $VpsHost $listDbCmd
} catch {
Write-Warning "Erreur lors de la liste des bases: $($_.Exception.Message)"
}
# 3. Vérifier si la base existe déjà
Write-Step "3. Vérification de l'existence de la base de données..."
$checkDbCmd = "kubectl exec -n $Namespace $POSTGRES_POD -- psql -U $PostgresUser -d postgres -tAc \"SELECT 1 FROM pg_database WHERE datname='$DatabaseName'\""
try {
$dbExists = ssh.exe $VpsHost $checkDbCmd
if ($dbExists -eq "1") {
Write-Warning "La base de données $DatabaseName existe déjà"
$createDb = Read-Host "Voulez-vous la recréer ? (oui/non)"
if ($createDb -eq "oui") {
$dropDbCmd = "kubectl exec -n $Namespace $POSTGRES_POD -- psql -U $PostgresUser -d postgres -c 'DROP DATABASE IF EXISTS $DatabaseName;'"
ssh.exe $VpsHost $dropDbCmd
Write-Success "Base de données supprimée"
} else {
Write-Info "Base de données conservée"
}
}
} catch {
Write-Warning "Erreur lors de la vérification: $($_.Exception.Message)"
}
# 4. Créer la base de données
Write-Step "4. Création de la base de données $DatabaseName..."
$createDbCmd = "kubectl exec -n $Namespace $POSTGRES_POD -- psql -U $PostgresUser -d postgres -c 'CREATE DATABASE $DatabaseName OWNER $PostgresUser;'"
try {
ssh.exe $VpsHost $createDbCmd
Write-Success "Base de données $DatabaseName créée"
} catch {
Write-Warning "Erreur lors de la création (peut-être qu'elle existe déjà): $($_.Exception.Message)"
}
# 5. Créer l'utilisateur
Write-Step "5. Création de l'utilisateur $DatabaseUser..."
$createUserCmd = "kubectl exec -n $Namespace $POSTGRES_POD -- psql -U $PostgresUser -d postgres -c \"CREATE USER $DatabaseUser WITH PASSWORD '$DatabasePassword';\""
try {
ssh.exe $VpsHost $createUserCmd
Write-Success "Utilisateur $DatabaseUser créé"
} catch {
Write-Warning "Erreur lors de la création de l'utilisateur (peut-être qu'il existe déjà): $($_.Exception.Message)"
}
# 6. Octroyer les privilèges
Write-Step "6. Octroi des privilèges..."
$grantDbCmd = "kubectl exec -n $Namespace $POSTGRES_POD -- psql -U $PostgresUser -d postgres -c 'GRANT ALL PRIVILEGES ON DATABASE $DatabaseName TO $DatabaseUser;'"
try {
ssh.exe $VpsHost $grantDbCmd
Write-Success "Privilèges accordés sur la base de données"
} catch {
Write-Warning "Erreur lors de l'octroi des privilèges: $($_.Exception.Message)"
}
# 7. Octroyer les privilèges sur le schéma public
Write-Step "7. Octroi des privilèges sur le schéma public..."
$grantSchemaCmd = "kubectl exec -n $Namespace $POSTGRES_POD -- psql -U $PostgresUser -d $DatabaseName -c 'GRANT ALL ON SCHEMA public TO $DatabaseUser;'"
try {
ssh.exe $VpsHost $grantSchemaCmd
Write-Success "Privilèges accordés sur le schéma public"
} catch {
Write-Warning "Erreur lors de l'octroi des privilèges sur le schéma: $($_.Exception.Message)"
}
# 8. Test de connexion
Write-Step "8. Test de connexion à la base de données..."
$testConnCmd = "kubectl exec -n $Namespace $POSTGRES_POD -- psql -U $DatabaseUser -d $DatabaseName -c 'SELECT version();'"
try {
$version = ssh.exe $VpsHost $testConnCmd
Write-Success "Connexion réussie !"
Write-Info "Version PostgreSQL: $version"
} catch {
Write-Error "Échec de la connexion: $($_.Exception.Message)"
exit 1
}
# 9. Résumé
Write-Step "9. Résumé de la configuration..."
Write-Host @"
CONFIGURATION BASE DE DONNÉES TERMINÉE
"@ -ForegroundColor Green
Write-Host "📋 INFORMATIONS IMPORTANTES:" -ForegroundColor Yellow
Write-Host ""
Write-Host "🗄️ BASE DE DONNÉES:" -ForegroundColor Cyan
Write-Host " Nom: $DatabaseName"
Write-Host " Utilisateur: $DatabaseUser"
Write-Host " Mot de passe: $DatabasePassword"
Write-Host ""
Write-Host "🔗 CONNEXION:" -ForegroundColor Cyan
Write-Host " Host: lions-db.lions.svc.cluster.local (Service Kubernetes)"
Write-Host " Port: 5432"
Write-Host " Database: $DatabaseName"
Write-Host ""
Write-Host "⚠️ ACTIONS REQUISES:" -ForegroundColor Yellow
Write-Host " 1. Sauvegardez le mot de passe de la base de données"
Write-Host " 2. Créez le secret Kubernetes avec ces informations"
Write-Host " 3. Vérifiez que Flyway peut exécuter les migrations"
Write-Host ""