269 lines
8.7 KiB
Bash
269 lines
8.7 KiB
Bash
#!/bin/bash
|
|
|
|
# =============================================================================
|
|
# SCRIPT DE NETTOYAGE CONFIGURATION UNIONFLOW KEYCLOAK
|
|
# =============================================================================
|
|
#
|
|
# Ce script supprime complètement la configuration UnionFlow de Keycloak :
|
|
# - Suppression des 8 comptes de test
|
|
# - Suppression des 8 rôles métier
|
|
# - Nettoyage complet pour recommencer
|
|
#
|
|
# ⚠️ ATTENTION : Cette action est irréversible !
|
|
#
|
|
# Usage : ./cleanup-unionflow-keycloak.sh
|
|
# =============================================================================
|
|
|
|
set -e
|
|
|
|
# Configuration
|
|
KEYCLOAK_URL="http://192.168.1.145:8180"
|
|
REALM="unionflow"
|
|
ADMIN_USER="admin"
|
|
ADMIN_PASSWORD="admin"
|
|
|
|
# Couleurs
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
|
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
|
|
log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; }
|
|
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
|
|
|
# Obtenir le token d'administration
|
|
get_admin_token() {
|
|
log_info "Obtention du token d'administration..."
|
|
|
|
local response=$(curl -s -X POST \
|
|
"${KEYCLOAK_URL}/realms/master/protocol/openid-connect/token" \
|
|
-H "Content-Type: application/x-www-form-urlencoded" \
|
|
-d "username=${ADMIN_USER}" \
|
|
-d "password=${ADMIN_PASSWORD}" \
|
|
-d "grant_type=password" \
|
|
-d "client_id=admin-cli")
|
|
|
|
ADMIN_TOKEN=$(echo "$response" | grep -o '"access_token":"[^"]*' | cut -d'"' -f4)
|
|
|
|
if [ -n "$ADMIN_TOKEN" ]; then
|
|
log_success "Token d'administration obtenu"
|
|
else
|
|
log_error "Impossible d'obtenir le token d'administration"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# Obtenir l'ID d'un utilisateur
|
|
get_user_id() {
|
|
local username="$1"
|
|
local response=$(curl -s -X GET \
|
|
"${KEYCLOAK_URL}/admin/realms/${REALM}/users?username=${username}" \
|
|
-H "Authorization: Bearer ${ADMIN_TOKEN}" \
|
|
-H "Content-Type: application/json")
|
|
|
|
echo "$response" | grep -o '"id":"[^"]*' | head -1 | cut -d'"' -f4
|
|
}
|
|
|
|
# Supprimer un utilisateur
|
|
delete_user() {
|
|
local username="$1"
|
|
|
|
log_info "Suppression de l'utilisateur: $username"
|
|
|
|
local user_id=$(get_user_id "$username")
|
|
|
|
if [ -z "$user_id" ]; then
|
|
log_warning "Utilisateur $username non trouvé"
|
|
return 0
|
|
fi
|
|
|
|
local response=$(curl -s -X DELETE \
|
|
"${KEYCLOAK_URL}/admin/realms/${REALM}/users/${user_id}" \
|
|
-H "Authorization: Bearer ${ADMIN_TOKEN}" \
|
|
-H "Content-Type: application/json")
|
|
|
|
if [ $? -eq 0 ]; then
|
|
log_success "Utilisateur $username supprimé"
|
|
else
|
|
log_error "Erreur lors de la suppression de l'utilisateur $username"
|
|
fi
|
|
}
|
|
|
|
# Supprimer un rôle
|
|
delete_role() {
|
|
local role_name="$1"
|
|
|
|
log_info "Suppression du rôle: $role_name"
|
|
|
|
local response=$(curl -s -X DELETE \
|
|
"${KEYCLOAK_URL}/admin/realms/${REALM}/roles/${role_name}" \
|
|
-H "Authorization: Bearer ${ADMIN_TOKEN}" \
|
|
-H "Content-Type: application/json")
|
|
|
|
if [ $? -eq 0 ]; then
|
|
log_success "Rôle $role_name supprimé"
|
|
else
|
|
log_warning "Rôle $role_name non trouvé ou déjà supprimé"
|
|
fi
|
|
}
|
|
|
|
# Confirmation de l'utilisateur
|
|
confirm_cleanup() {
|
|
echo ""
|
|
echo "============================================================================="
|
|
echo "⚠️ ATTENTION - SUPPRESSION COMPLÈTE DE LA CONFIGURATION UNIONFLOW"
|
|
echo "============================================================================="
|
|
echo ""
|
|
echo "Cette action va supprimer DÉFINITIVEMENT :"
|
|
echo ""
|
|
echo "👥 UTILISATEURS DE TEST :"
|
|
echo " • superadmin (superadmin@unionflow.dev)"
|
|
echo " • admin.org (admin@association-dev.fr)"
|
|
echo " • tech.lead (tech@association-dev.fr)"
|
|
echo " • tresorier (tresorier@association-dev.fr)"
|
|
echo " • rh.manager (rh@association-dev.fr)"
|
|
echo " • marie.active (marie@association-dev.fr)"
|
|
echo " • jean.simple (jean@association-dev.fr)"
|
|
echo " • visiteur (visiteur@example.com)"
|
|
echo ""
|
|
echo "🔐 RÔLES MÉTIER :"
|
|
echo " • SUPER_ADMINISTRATEUR"
|
|
echo " • ADMINISTRATEUR_ORGANISATION"
|
|
echo " • RESPONSABLE_TECHNIQUE"
|
|
echo " • RESPONSABLE_FINANCIER"
|
|
echo " • RESPONSABLE_MEMBRES"
|
|
echo " • MEMBRE_ACTIF"
|
|
echo " • MEMBRE_SIMPLE"
|
|
echo " • VISITEUR"
|
|
echo ""
|
|
echo "⚠️ Cette action est IRRÉVERSIBLE !"
|
|
echo ""
|
|
|
|
read -p "Êtes-vous sûr de vouloir continuer ? (tapez 'SUPPRIMER' pour confirmer) : " confirmation
|
|
|
|
if [ "$confirmation" != "SUPPRIMER" ]; then
|
|
log_info "Opération annulée par l'utilisateur"
|
|
exit 0
|
|
fi
|
|
|
|
echo ""
|
|
log_warning "Confirmation reçue. Début de la suppression..."
|
|
echo ""
|
|
}
|
|
|
|
# =============================================================================
|
|
# EXÉCUTION DU NETTOYAGE
|
|
# =============================================================================
|
|
|
|
echo "============================================================================="
|
|
echo "🧹 NETTOYAGE CONFIGURATION UNIONFLOW KEYCLOAK"
|
|
echo "============================================================================="
|
|
|
|
# Demander confirmation
|
|
confirm_cleanup
|
|
|
|
# Obtenir le token d'administration
|
|
get_admin_token
|
|
|
|
echo ""
|
|
echo "============================================================================="
|
|
echo "👥 SUPPRESSION DES UTILISATEURS DE TEST"
|
|
echo "============================================================================="
|
|
echo ""
|
|
|
|
# Supprimer tous les utilisateurs de test
|
|
users=("superadmin" "admin.org" "tech.lead" "tresorier" "rh.manager" "marie.active" "jean.simple" "visiteur")
|
|
|
|
for user in "${users[@]}"; do
|
|
delete_user "$user"
|
|
done
|
|
|
|
echo ""
|
|
echo "============================================================================="
|
|
echo "🔐 SUPPRESSION DES RÔLES MÉTIER"
|
|
echo "============================================================================="
|
|
echo ""
|
|
|
|
# Supprimer tous les rôles (dans l'ordre inverse de la hiérarchie)
|
|
roles=("VISITEUR" "MEMBRE_SIMPLE" "MEMBRE_ACTIF" "RESPONSABLE_MEMBRES" "RESPONSABLE_FINANCIER" "RESPONSABLE_TECHNIQUE" "ADMINISTRATEUR_ORGANISATION" "SUPER_ADMINISTRATEUR")
|
|
|
|
for role in "${roles[@]}"; do
|
|
delete_role "$role"
|
|
done
|
|
|
|
echo ""
|
|
echo "============================================================================="
|
|
echo "🔍 VÉRIFICATION DU NETTOYAGE"
|
|
echo "============================================================================="
|
|
echo ""
|
|
|
|
# Vérifier que les utilisateurs ont été supprimés
|
|
log_info "Vérification de la suppression des utilisateurs..."
|
|
remaining_users=0
|
|
|
|
for user in "${users[@]}"; do
|
|
local user_id=$(get_user_id "$user")
|
|
if [ -n "$user_id" ]; then
|
|
log_warning "Utilisateur $user encore présent"
|
|
((remaining_users++))
|
|
fi
|
|
done
|
|
|
|
if [ $remaining_users -eq 0 ]; then
|
|
log_success "Tous les utilisateurs de test ont été supprimés"
|
|
else
|
|
log_warning "$remaining_users utilisateurs n'ont pas pu être supprimés"
|
|
fi
|
|
|
|
# Vérifier que les rôles ont été supprimés
|
|
log_info "Vérification de la suppression des rôles..."
|
|
remaining_roles=0
|
|
|
|
for role in "${roles[@]}"; do
|
|
local role_check=$(curl -s -X GET \
|
|
"${KEYCLOAK_URL}/admin/realms/${REALM}/roles/${role}" \
|
|
-H "Authorization: Bearer ${ADMIN_TOKEN}" \
|
|
-H "Content-Type: application/json")
|
|
|
|
if echo "$role_check" | grep -q '"name"'; then
|
|
log_warning "Rôle $role encore présent"
|
|
((remaining_roles++))
|
|
fi
|
|
done
|
|
|
|
if [ $remaining_roles -eq 0 ]; then
|
|
log_success "Tous les rôles métier ont été supprimés"
|
|
else
|
|
log_warning "$remaining_roles rôles n'ont pas pu être supprimés"
|
|
fi
|
|
|
|
echo ""
|
|
echo "============================================================================="
|
|
echo "✅ NETTOYAGE TERMINÉ"
|
|
echo "============================================================================="
|
|
echo ""
|
|
|
|
if [ $remaining_users -eq 0 ] && [ $remaining_roles -eq 0 ]; then
|
|
log_success "🎉 Nettoyage complet réussi !"
|
|
echo ""
|
|
echo "✅ Tous les utilisateurs de test supprimés"
|
|
echo "✅ Tous les rôles métier supprimés"
|
|
echo "✅ Configuration UnionFlow complètement nettoyée"
|
|
echo ""
|
|
echo "🚀 Vous pouvez maintenant relancer setup-unionflow-keycloak.sh"
|
|
else
|
|
log_warning "⚠️ Nettoyage partiel"
|
|
echo ""
|
|
echo "Éléments restants :"
|
|
echo " • Utilisateurs : $remaining_users"
|
|
echo " • Rôles : $remaining_roles"
|
|
echo ""
|
|
echo "🔧 Vous pouvez relancer ce script ou supprimer manuellement via l'interface Keycloak"
|
|
fi
|
|
|
|
echo ""
|
|
echo "============================================================================="
|