Refactoring
This commit is contained in:
209
setup-complete.sh
Normal file
209
setup-complete.sh
Normal file
@@ -0,0 +1,209 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "============================================================================="
|
||||
echo "🚀 CONFIGURATION COMPLÈTE KEYCLOAK UNIONFLOW"
|
||||
echo "============================================================================="
|
||||
|
||||
KEYCLOAK_URL="http://localhost:8180"
|
||||
ADMIN_USER="admin"
|
||||
ADMIN_PASSWORD="admin123"
|
||||
|
||||
# Fonction pour obtenir le token admin
|
||||
get_admin_token() {
|
||||
echo "🔑 Obtention du token administrateur..."
|
||||
|
||||
ADMIN_TOKEN=$(curl -s -X POST \
|
||||
"${KEYCLOAK_URL}/realms/master/protocol/openid-connect/token" \
|
||||
-H "Content-Type: application/x-www-form-urlencoded" \
|
||||
-d "username=${ADMIN_USER}&password=${ADMIN_PASSWORD}&grant_type=password&client_id=admin-cli" \
|
||||
| jq -r '.access_token')
|
||||
|
||||
if [ "$ADMIN_TOKEN" = "null" ] || [ -z "$ADMIN_TOKEN" ]; then
|
||||
echo "❌ Impossible d'obtenir le token admin"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ Token admin obtenu"
|
||||
}
|
||||
|
||||
# Fonction pour créer le realm
|
||||
create_realm() {
|
||||
echo "🏗️ Création du realm unionflow..."
|
||||
|
||||
curl -s -X POST \
|
||||
"${KEYCLOAK_URL}/admin/realms" \
|
||||
-H "Authorization: Bearer ${ADMIN_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"realm": "unionflow",
|
||||
"enabled": true,
|
||||
"displayName": "UnionFlow",
|
||||
"loginWithEmailAllowed": true,
|
||||
"duplicateEmailsAllowed": false,
|
||||
"resetPasswordAllowed": true,
|
||||
"editUsernameAllowed": false,
|
||||
"bruteForceProtected": false
|
||||
}'
|
||||
|
||||
echo "✅ Realm unionflow créé"
|
||||
}
|
||||
|
||||
# Fonction pour créer le client
|
||||
create_client() {
|
||||
echo "📱 Création du client unionflow-mobile..."
|
||||
|
||||
curl -s -X POST \
|
||||
"${KEYCLOAK_URL}/admin/realms/unionflow/clients" \
|
||||
-H "Authorization: Bearer ${ADMIN_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"clientId": "unionflow-mobile",
|
||||
"enabled": true,
|
||||
"publicClient": true,
|
||||
"directAccessGrantsEnabled": true,
|
||||
"standardFlowEnabled": true,
|
||||
"implicitFlowEnabled": false,
|
||||
"serviceAccountsEnabled": false,
|
||||
"redirectUris": ["*"],
|
||||
"webOrigins": ["*"]
|
||||
}'
|
||||
|
||||
echo "✅ Client unionflow-mobile créé"
|
||||
}
|
||||
|
||||
# Fonction pour créer les rôles
|
||||
create_roles() {
|
||||
echo "👥 Création des rôles..."
|
||||
|
||||
declare -a ROLES=(
|
||||
"SUPER_ADMINISTRATEUR"
|
||||
"RESPONSABLE_TECHNIQUE"
|
||||
"RESPONSABLE_MEMBRES"
|
||||
"MEMBRE_ACTIF"
|
||||
"MEMBRE_SIMPLE"
|
||||
)
|
||||
|
||||
for role in "${ROLES[@]}"; do
|
||||
curl -s -X POST \
|
||||
"${KEYCLOAK_URL}/admin/realms/unionflow/roles" \
|
||||
-H "Authorization: Bearer ${ADMIN_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"name\": \"${role}\", \"description\": \"Rôle ${role}\"}"
|
||||
|
||||
echo " ✓ Rôle ${role} créé"
|
||||
done
|
||||
}
|
||||
|
||||
# Fonction pour créer un utilisateur
|
||||
create_user() {
|
||||
local username=$1
|
||||
local email=$2
|
||||
local firstname=$3
|
||||
local lastname=$4
|
||||
local password=$5
|
||||
local role=$6
|
||||
|
||||
echo "👤 Création de l'utilisateur ${username}..."
|
||||
|
||||
# Créer l'utilisateur
|
||||
USER_ID=$(curl -s -X POST \
|
||||
"${KEYCLOAK_URL}/admin/realms/unionflow/users" \
|
||||
-H "Authorization: Bearer ${ADMIN_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{
|
||||
\"username\": \"${username}\",
|
||||
\"email\": \"${email}\",
|
||||
\"firstName\": \"${firstname}\",
|
||||
\"lastName\": \"${lastname}\",
|
||||
\"enabled\": true,
|
||||
\"emailVerified\": true
|
||||
}" \
|
||||
-w "%{http_code}" -o /dev/null)
|
||||
|
||||
if [ "$USER_ID" != "201" ]; then
|
||||
echo " ⚠️ Utilisateur ${username} existe déjà ou erreur de création"
|
||||
fi
|
||||
|
||||
# Obtenir l'ID de l'utilisateur
|
||||
USER_UUID=$(curl -s -X GET \
|
||||
"${KEYCLOAK_URL}/admin/realms/unionflow/users?username=${username}" \
|
||||
-H "Authorization: Bearer ${ADMIN_TOKEN}" \
|
||||
| jq -r '.[0].id')
|
||||
|
||||
# Définir le mot de passe
|
||||
curl -s -X PUT \
|
||||
"${KEYCLOAK_URL}/admin/realms/unionflow/users/${USER_UUID}/reset-password" \
|
||||
-H "Authorization: Bearer ${ADMIN_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{
|
||||
\"type\": \"password\",
|
||||
\"value\": \"${password}\",
|
||||
\"temporary\": false
|
||||
}"
|
||||
|
||||
# Assigner le rôle
|
||||
ROLE_DATA=$(curl -s -X GET \
|
||||
"${KEYCLOAK_URL}/admin/realms/unionflow/roles/${role}" \
|
||||
-H "Authorization: Bearer ${ADMIN_TOKEN}")
|
||||
|
||||
curl -s -X POST \
|
||||
"${KEYCLOAK_URL}/admin/realms/unionflow/users/${USER_UUID}/role-mappings/realm" \
|
||||
-H "Authorization: Bearer ${ADMIN_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "[${ROLE_DATA}]"
|
||||
|
||||
echo " ✅ Utilisateur ${username} créé avec le rôle ${role}"
|
||||
}
|
||||
|
||||
# Fonction principale
|
||||
main() {
|
||||
echo "🔍 Vérification de la connexion à Keycloak..."
|
||||
|
||||
if ! curl -s "${KEYCLOAK_URL}" > /dev/null; then
|
||||
echo "❌ Keycloak n'est pas accessible sur ${KEYCLOAK_URL}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ Keycloak accessible"
|
||||
|
||||
# Obtenir le token admin
|
||||
get_admin_token
|
||||
|
||||
# Créer le realm
|
||||
create_realm
|
||||
|
||||
# Créer le client
|
||||
create_client
|
||||
|
||||
# Créer les rôles
|
||||
create_roles
|
||||
|
||||
# Créer les utilisateurs
|
||||
create_user "superadmin" "superadmin@unionflow.com" "Super" "Admin" "SuperAdmin123!" "SUPER_ADMINISTRATEUR"
|
||||
create_user "marie.active" "marie.active@unionflow.com" "Marie" "Active" "Marie123!" "MEMBRE_ACTIF"
|
||||
create_user "jean.simple" "jean.simple@unionflow.com" "Jean" "Simple" "Jean123!" "MEMBRE_SIMPLE"
|
||||
create_user "tech.lead" "tech.lead@unionflow.com" "Tech" "Lead" "TechLead123!" "RESPONSABLE_TECHNIQUE"
|
||||
create_user "rh.manager" "rh.manager@unionflow.com" "RH" "Manager" "RhManager123!" "RESPONSABLE_MEMBRES"
|
||||
|
||||
echo ""
|
||||
echo "============================================================================="
|
||||
echo "✅ CONFIGURATION TERMINÉE !"
|
||||
echo "============================================================================="
|
||||
echo ""
|
||||
echo "🎯 COMPTES CRÉÉS :"
|
||||
echo " • superadmin / SuperAdmin123! (SUPER_ADMINISTRATEUR)"
|
||||
echo " • marie.active / Marie123! (MEMBRE_ACTIF)"
|
||||
echo " • jean.simple / Jean123! (MEMBRE_SIMPLE)"
|
||||
echo " • tech.lead / TechLead123! (RESPONSABLE_TECHNIQUE)"
|
||||
echo " • rh.manager / RhManager123! (RESPONSABLE_MEMBRES)"
|
||||
echo ""
|
||||
echo "🚀 Testez maintenant avec: ./verify-final.sh"
|
||||
}
|
||||
|
||||
# Vérifier si jq est installé
|
||||
if ! command -v jq &> /dev/null; then
|
||||
echo "❌ jq n'est pas installé. Installation..."
|
||||
sudo apt-get update && sudo apt-get install -y jq
|
||||
fi
|
||||
|
||||
main
|
||||
Reference in New Issue
Block a user