#!/bin/bash

echo "============================================================================="
echo "🚀 CONFIGURATION DIRECTE KEYCLOAK UNIONFLOW"
echo "============================================================================="

KEYCLOAK_URL="http://localhost:8180"

# Fonction pour créer le realm via l'interface web
create_realm_direct() {
    echo "🏗️  Tentative de création du realm unionflow..."
    
    # Essayons de créer le realm directement
    curl -s -X POST \
        "${KEYCLOAK_URL}/admin/realms" \
        -H "Content-Type: application/json" \
        -d '{
            "realm": "unionflow",
            "enabled": true,
            "displayName": "UnionFlow",
            "loginWithEmailAllowed": true,
            "duplicateEmailsAllowed": false,
            "resetPasswordAllowed": true,
            "editUsernameAllowed": false,
            "bruteForceProtected": false
        }' > /dev/null 2>&1
    
    echo "✅ Tentative de création du realm effectuée"
}

# Fonction pour tester l'authentification
test_auth() {
    local username=$1
    local password=$2
    
    echo -n "Test ${username}... "
    
    response=$(curl -s -X POST \
        "${KEYCLOAK_URL}/realms/unionflow/protocol/openid-connect/token" \
        -H "Content-Type: application/x-www-form-urlencoded" \
        -d "username=${username}&password=${password}&grant_type=password&client_id=unionflow-mobile")
    
    if echo "$response" | grep -q "access_token"; then
        echo "✅ SUCCÈS"
        return 0
    else
        echo "❌ ÉCHEC"
        return 1
    fi
}

# 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"
    
    # Créer le realm
    create_realm_direct
    
    echo ""
    echo "============================================================================="
    echo "📋 INSTRUCTIONS MANUELLES"
    echo "============================================================================="
    echo ""
    echo "🌐 Ouvrez votre navigateur sur: http://localhost:8180"
    echo ""
    echo "1️⃣  PREMIÈRE CONNEXION :"
    echo "   • Cliquez sur 'Administration Console'"
    echo "   • Créez un compte admin si demandé"
    echo "   • Ou utilisez admin/admin123 si disponible"
    echo ""
    echo "2️⃣  CRÉER LE REALM :"
    echo "   • Cliquez sur 'Create Realm'"
    echo "   • Nom: unionflow"
    echo "   • Cliquez 'Create'"
    echo ""
    echo "3️⃣  CRÉER LE CLIENT :"
    echo "   • Allez dans Clients > Create client"
    echo "   • Client ID: unionflow-mobile"
    echo "   • Client type: OpenID Connect"
    echo "   • Cliquez 'Next' puis 'Save'"
    echo "   • Dans Settings: Public client = ON"
    echo "   • Direct access grants = ON"
    echo "   • Cliquez 'Save'"
    echo ""
    echo "4️⃣  CRÉER LES RÔLES :"
    echo "   • Allez dans Realm roles > Create role"
    echo "   • Créez ces rôles :"
    echo "     - SUPER_ADMINISTRATEUR"
    echo "     - RESPONSABLE_TECHNIQUE"
    echo "     - RESPONSABLE_MEMBRES"
    echo "     - MEMBRE_ACTIF"
    echo "     - MEMBRE_SIMPLE"
    echo ""
    echo "5️⃣  CRÉER LES UTILISATEURS :"
    echo "   • Allez dans Users > Add user"
    echo "   • Créez ces comptes :"
    echo ""
    echo "   👤 superadmin"
    echo "      Email: superadmin@unionflow.com"
    echo "      First name: Super, Last name: Admin"
    echo "      Mot de passe: SuperAdmin123!"
    echo "      Rôle: SUPER_ADMINISTRATEUR"
    echo ""
    echo "   👤 marie.active"
    echo "      Email: marie.active@unionflow.com"
    echo "      First name: Marie, Last name: Active"
    echo "      Mot de passe: Marie123!"
    echo "      Rôle: MEMBRE_ACTIF"
    echo ""
    echo "   👤 jean.simple"
    echo "      Email: jean.simple@unionflow.com"
    echo "      First name: Jean, Last name: Simple"
    echo "      Mot de passe: Jean123!"
    echo "      Rôle: MEMBRE_SIMPLE"
    echo ""
    echo "   👤 tech.lead"
    echo "      Email: tech.lead@unionflow.com"
    echo "      First name: Tech, Last name: Lead"
    echo "      Mot de passe: TechLead123!"
    echo "      Rôle: RESPONSABLE_TECHNIQUE"
    echo ""
    echo "   👤 rh.manager"
    echo "      Email: rh.manager@unionflow.com"
    echo "      First name: RH, Last name: Manager"
    echo "      Mot de passe: RhManager123!"
    echo "      Rôle: RESPONSABLE_MEMBRES"
    echo ""
    echo "6️⃣  POUR CHAQUE UTILISATEUR :"
    echo "   • Après création, allez dans l'onglet 'Credentials'"
    echo "   • Cliquez 'Set password'"
    echo "   • Entrez le mot de passe, décochez 'Temporary'"
    echo "   • Allez dans 'Role mapping'"
    echo "   • Cliquez 'Assign role' et sélectionnez le bon rôle"
    echo ""
    echo "7️⃣  TESTER :"
    echo "   • Une fois terminé, exécutez: ./verify-final.sh"
    echo ""
    echo "============================================================================="
    echo "🎯 APRÈS CONFIGURATION MANUELLE, TOUS LES COMPTES FONCTIONNERONT !"
    echo "============================================================================="
}

main
