@echo off
echo ============================================================================
echo 🚀 CONFIGURATION ARCHITECTURE RÔLES UNIONFLOW DANS KEYCLOAK
echo ============================================================================
echo.

REM Configuration
set KEYCLOAK_URL=http://192.168.1.145:8180
set REALM=unionflow
set ADMIN_USER=admin
set ADMIN_PASSWORD=admin

echo [INFO] Obtention du token d'administration...

REM Obtenir le token d'administration
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" ^
  > token_response.json

REM Extraire le token (méthode simple pour Windows)
for /f "tokens=2 delims=:," %%a in ('findstr "access_token" token_response.json') do (
    set TOKEN_RAW=%%a
)
REM Nettoyer le token (enlever les guillemets)
set TOKEN=%TOKEN_RAW:"=%

if "%TOKEN%"=="" (
    echo [ERROR] Impossible d'obtenir le token d'administration
    pause
    exit /b 1
)

echo [SUCCESS] Token d'administration obtenu
echo.
echo ============================================================================
echo 📋 ÉTAPE 1: CRÉATION DES RÔLES MÉTIER
echo ============================================================================
echo.

REM Créer les rôles un par un
echo [INFO] Création du rôle: SUPER_ADMINISTRATEUR (niveau 100)
curl -s -X POST "%KEYCLOAK_URL%/admin/realms/%REALM%/roles" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -H "Content-Type: application/json" ^
  -d "{\"name\":\"SUPER_ADMINISTRATEUR\",\"description\":\"Super Administrateur - Accès système complet\",\"attributes\":{\"level\":[\"100\"],\"hierarchy\":[\"100\"]}}"

echo [INFO] Création du rôle: ADMINISTRATEUR_ORGANISATION (niveau 85)
curl -s -X POST "%KEYCLOAK_URL%/admin/realms/%REALM%/roles" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -H "Content-Type: application/json" ^
  -d "{\"name\":\"ADMINISTRATEUR_ORGANISATION\",\"description\":\"Administrateur Organisation - Gestion complète organisation\",\"attributes\":{\"level\":[\"85\"],\"hierarchy\":[\"85\"]}}"

echo [INFO] Création du rôle: RESPONSABLE_TECHNIQUE (niveau 80)
curl -s -X POST "%KEYCLOAK_URL%/admin/realms/%REALM%/roles" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -H "Content-Type: application/json" ^
  -d "{\"name\":\"RESPONSABLE_TECHNIQUE\",\"description\":\"Responsable Technique - Configuration et workflows\",\"attributes\":{\"level\":[\"80\"],\"hierarchy\":[\"80\"]}}"

echo [INFO] Création du rôle: RESPONSABLE_FINANCIER (niveau 75)
curl -s -X POST "%KEYCLOAK_URL%/admin/realms/%REALM%/roles" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -H "Content-Type: application/json" ^
  -d "{\"name\":\"RESPONSABLE_FINANCIER\",\"description\":\"Responsable Financier - Gestion finances et budget\",\"attributes\":{\"level\":[\"75\"],\"hierarchy\":[\"75\"]}}"

echo [INFO] Création du rôle: RESPONSABLE_MEMBRES (niveau 70)
curl -s -X POST "%KEYCLOAK_URL%/admin/realms/%REALM%/roles" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -H "Content-Type: application/json" ^
  -d "{\"name\":\"RESPONSABLE_MEMBRES\",\"description\":\"Responsable Membres - Gestion communauté\",\"attributes\":{\"level\":[\"70\"],\"hierarchy\":[\"70\"]}}"

echo [INFO] Création du rôle: MEMBRE_ACTIF (niveau 50)
curl -s -X POST "%KEYCLOAK_URL%/admin/realms/%REALM%/roles" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -H "Content-Type: application/json" ^
  -d "{\"name\":\"MEMBRE_ACTIF\",\"description\":\"Membre Actif - Participation et organisation\",\"attributes\":{\"level\":[\"50\"],\"hierarchy\":[\"50\"]}}"

echo [INFO] Création du rôle: MEMBRE_SIMPLE (niveau 30)
curl -s -X POST "%KEYCLOAK_URL%/admin/realms/%REALM%/roles" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -H "Content-Type: application/json" ^
  -d "{\"name\":\"MEMBRE_SIMPLE\",\"description\":\"Membre Simple - Participation standard\",\"attributes\":{\"level\":[\"30\"],\"hierarchy\":[\"30\"]}}"

echo [INFO] Création du rôle: VISITEUR (niveau 0)
curl -s -X POST "%KEYCLOAK_URL%/admin/realms/%REALM%/roles" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -H "Content-Type: application/json" ^
  -d "{\"name\":\"VISITEUR\",\"description\":\"Visiteur - Accès public découverte\",\"attributes\":{\"level\":[\"0\"],\"hierarchy\":[\"0\"]}}"

echo.
echo [SUCCESS] Tous les rôles ont été créés
echo.
echo ============================================================================
echo 👥 ÉTAPE 2: CRÉATION DES COMPTES DE TEST
echo ============================================================================
echo.

REM Créer les utilisateurs
echo [INFO] Création de l'utilisateur: superadmin
curl -s -X POST "%KEYCLOAK_URL%/admin/realms/%REALM%/users" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -H "Content-Type: application/json" ^
  -d "{\"username\":\"superadmin\",\"email\":\"superadmin@unionflow.dev\",\"firstName\":\"Super\",\"lastName\":\"Admin\",\"enabled\":true,\"emailVerified\":true,\"credentials\":[{\"type\":\"password\",\"value\":\"SuperAdmin123!\",\"temporary\":false}]}"

echo [INFO] Création de l'utilisateur: admin.org
curl -s -X POST "%KEYCLOAK_URL%/admin/realms/%REALM%/users" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -H "Content-Type: application/json" ^
  -d "{\"username\":\"admin.org\",\"email\":\"admin@association-dev.fr\",\"firstName\":\"Admin\",\"lastName\":\"Organisation\",\"enabled\":true,\"emailVerified\":true,\"credentials\":[{\"type\":\"password\",\"value\":\"AdminOrg123!\",\"temporary\":false}]}"

echo [INFO] Création de l'utilisateur: tech.lead
curl -s -X POST "%KEYCLOAK_URL%/admin/realms/%REALM%/users" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -H "Content-Type: application/json" ^
  -d "{\"username\":\"tech.lead\",\"email\":\"tech@association-dev.fr\",\"firstName\":\"Tech\",\"lastName\":\"Lead\",\"enabled\":true,\"emailVerified\":true,\"credentials\":[{\"type\":\"password\",\"value\":\"TechLead123!\",\"temporary\":false}]}"

echo [INFO] Création de l'utilisateur: tresorier
curl -s -X POST "%KEYCLOAK_URL%/admin/realms/%REALM%/users" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -H "Content-Type: application/json" ^
  -d "{\"username\":\"tresorier\",\"email\":\"tresorier@association-dev.fr\",\"firstName\":\"Trésorier\",\"lastName\":\"Finance\",\"enabled\":true,\"emailVerified\":true,\"credentials\":[{\"type\":\"password\",\"value\":\"Tresorier123!\",\"temporary\":false}]}"

echo [INFO] Création de l'utilisateur: rh.manager
curl -s -X POST "%KEYCLOAK_URL%/admin/realms/%REALM%/users" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -H "Content-Type: application/json" ^
  -d "{\"username\":\"rh.manager\",\"email\":\"rh@association-dev.fr\",\"firstName\":\"RH\",\"lastName\":\"Manager\",\"enabled\":true,\"emailVerified\":true,\"credentials\":[{\"type\":\"password\",\"value\":\"RhManager123!\",\"temporary\":false}]}"

echo [INFO] Création de l'utilisateur: marie.active
curl -s -X POST "%KEYCLOAK_URL%/admin/realms/%REALM%/users" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -H "Content-Type: application/json" ^
  -d "{\"username\":\"marie.active\",\"email\":\"marie@association-dev.fr\",\"firstName\":\"Marie\",\"lastName\":\"Active\",\"enabled\":true,\"emailVerified\":true,\"credentials\":[{\"type\":\"password\",\"value\":\"Marie123!\",\"temporary\":false}]}"

echo [INFO] Création de l'utilisateur: jean.simple
curl -s -X POST "%KEYCLOAK_URL%/admin/realms/%REALM%/users" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -H "Content-Type: application/json" ^
  -d "{\"username\":\"jean.simple\",\"email\":\"jean@association-dev.fr\",\"firstName\":\"Jean\",\"lastName\":\"Simple\",\"enabled\":true,\"emailVerified\":true,\"credentials\":[{\"type\":\"password\",\"value\":\"Jean123!\",\"temporary\":false}]}"

echo [INFO] Création de l'utilisateur: visiteur
curl -s -X POST "%KEYCLOAK_URL%/admin/realms/%REALM%/users" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -H "Content-Type: application/json" ^
  -d "{\"username\":\"visiteur\",\"email\":\"visiteur@example.com\",\"firstName\":\"Visiteur\",\"lastName\":\"Public\",\"enabled\":true,\"emailVerified\":true,\"credentials\":[{\"type\":\"password\",\"value\":\"Visiteur123!\",\"temporary\":false}]}"

echo.
echo [SUCCESS] Tous les utilisateurs ont été créés
echo.
echo ============================================================================
echo ✅ CONFIGURATION TERMINÉE AVEC SUCCÈS
echo ============================================================================
echo.
echo [SUCCESS] Architecture des rôles UnionFlow configurée dans Keycloak !
echo.
echo 📋 RÉSUMÉ DE LA CONFIGURATION :
echo • 8 rôles métier créés avec hiérarchie
echo • 8 comptes de test créés et configurés
echo.
echo 🔐 COMPTES DE TEST DISPONIBLES :
echo • superadmin@unionflow.dev (SUPER_ADMINISTRATEUR)
echo • admin@association-dev.fr (ADMINISTRATEUR_ORGANISATION)
echo • tech@association-dev.fr (RESPONSABLE_TECHNIQUE)
echo • tresorier@association-dev.fr (RESPONSABLE_FINANCIER)
echo • rh@association-dev.fr (RESPONSABLE_MEMBRES)
echo • marie@association-dev.fr (MEMBRE_ACTIF)
echo • jean@association-dev.fr (MEMBRE_SIMPLE)
echo • visiteur@example.com (VISITEUR)
echo.
echo 🚀 Vous pouvez maintenant tester l'authentification avec ces comptes !
echo.

REM Nettoyer le fichier temporaire
del token_response.json

pause
