Files
unionflow-server-impl-quarkus/fix-passwords.sh
2025-09-19 16:09:21 +00:00

132 lines
4.3 KiB
Bash

#!/bin/bash
echo "============================================================================="
echo "🔧 RÉPARATION DES MOTS DE PASSE UTILISATEURS UNIONFLOW"
echo "============================================================================="
echo ""
# Obtenir le token admin
echo "[INFO] Obtention du token d'administration..."
token_response=$(curl -s -X POST \
"http://192.168.1.145:8180/realms/master/protocol/openid-connect/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=admin&password=admin&grant_type=password&client_id=admin-cli")
if echo "$token_response" | grep -q "access_token"; then
token=$(echo "$token_response" | grep -o '"access_token":"[^"]*' | cut -d'"' -f4)
echo "[SUCCESS] Token obtenu"
else
echo "[ERROR] Impossible d'obtenir le token"
exit 1
fi
echo ""
echo "Réparation des mots de passe..."
echo ""
# Fonction pour obtenir l'ID utilisateur
get_user_id() {
local username="$1"
local response=$(curl -s -X GET \
"http://192.168.1.145:8180/admin/realms/unionflow/users?username=${username}" \
-H "Authorization: Bearer ${token}")
echo "$response" | grep -o '"id":"[^"]*' | head -1 | cut -d'"' -f4
}
# Fonction pour réinitialiser le mot de passe
reset_password() {
local username="$1"
local password="$2"
echo -n "Réparation mot de passe pour $username... "
# Obtenir l'ID utilisateur
user_id=$(get_user_id "$username")
if [ -z "$user_id" ]; then
echo "✗ Utilisateur non trouvé"
return 1
fi
# Réinitialiser le mot de passe
local response=$(curl -s -w "%{http_code}" -X PUT \
"http://192.168.1.145:8180/admin/realms/unionflow/users/${user_id}/reset-password" \
-H "Authorization: Bearer ${token}" \
-H "Content-Type: application/json" \
-d "{\"type\":\"password\",\"value\":\"${password}\",\"temporary\":false}")
local http_code="${response: -3}"
if [ "$http_code" = "204" ]; then
echo "✓ SUCCÈS"
return 0
else
echo "✗ ÉCHEC (code: $http_code)"
return 1
fi
}
# Réinitialiser les mots de passe pour tous les utilisateurs
declare -A users=(
["marie.active"]="Marie123!"
["superadmin"]="SuperAdmin123!"
["jean.simple"]="Jean123!"
["tech.lead"]="TechLead123!"
["rh.manager"]="RhManager123!"
["admin.org"]="AdminOrg123!"
["tresorier"]="Tresorier123!"
["visiteur"]="Visiteur123!"
)
success_count=0
total_count=${#users[@]}
for username in "${!users[@]}"; do
password="${users[$username]}"
if reset_password "$username" "$password"; then
((success_count++))
fi
done
echo ""
echo "============================================================================="
echo "📊 RÉSULTATS RÉPARATION"
echo "============================================================================="
echo ""
echo "✅ Mots de passe réparés : $success_count/$total_count"
echo ""
if [ $success_count -gt 0 ]; then
echo "🧪 Test d'authentification avec marie.active..."
auth_response=$(curl -s -X POST \
"http://192.168.1.145:8180/realms/unionflow/protocol/openid-connect/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=marie.active&password=Marie123!&grant_type=password&client_id=unionflow-mobile")
if echo "$auth_response" | grep -q "access_token"; then
echo "✓ Test authentification réussi !"
echo ""
echo "🎉 RÉPARATION TERMINÉE AVEC SUCCÈS !"
echo ""
echo "🚀 COMPTES PRÊTS POUR L'APPLICATION MOBILE :"
echo " • marie.active / Marie123! (MEMBRE_ACTIF)"
echo " • superadmin / SuperAdmin123! (SUPER_ADMINISTRATEUR)"
echo " • jean.simple / Jean123! (MEMBRE_SIMPLE)"
echo " • tech.lead / TechLead123! (RESPONSABLE_TECHNIQUE)"
echo " • rh.manager / RhManager123! (RESPONSABLE_MEMBRES)"
echo ""
else
echo "✗ Test authentification échoué"
echo "Réponse: ${auth_response:0:100}..."
fi
else
echo "❌ Aucun mot de passe n'a pu être réparé"
fi
echo ""
echo "============================================================================="
echo "✅ RÉPARATION TERMINÉE"
echo "============================================================================="