# Scripts d'import Furious → Zitadel > Scripts Python/Shell pour l'import automatisé des collaborateurs Seize depuis Furious Squad vers Zitadel. --- ## 📁 Liste des scripts | Fichier | Type | Description | |---|---|---| | `read-all-users.sh` | Shell | Récupère les users depuis Furious API → JSON | | `test-auth.sh` | Shell | Teste l'auth Furious | | `import-furious-to-zitadel.py` | Python | ⭐ Script principal d'import | | `merge-duplicates.py` | Python | Fusion des doublons après import | | `generate-roles-mapping.py` | Python | Génère le mapping email → rôle | | `assign-roles.py` | Python | Attribue les rôles RBAC dans Zitadel | | `extract-distribution-csv.py` | Python | Génère le CSV pour distribution Teams | --- ## 🔧 Setup initial ### 1. Environnement Python ```bash cd ~/furious-to-zitadel python3 -m venv venv source venv/bin/activate pip install requests pyjwt cryptography ``` ### 2. Fichier `.env` ```env FURIOUS_USERNAME=__creer_dans_furious_config__ FURIOUS_PASSWORD=__creer_dans_furious_config__ FURIOUS_API_URL=https://seize-consulting.furious-squad.com/api/v2 ``` `chmod 600 .env` ### 3. Clé service account Zitadel Voir [docs/06-import-furious.md](../../docs/06-import-furious.md). Placer le fichier dans le dossier sous le nom `zitadelfuriousimportkey.json` avec `chmod 600`. --- ## 🚀 Procédure complète ```bash cd ~/furious-to-zitadel source venv/bin/activate # 1. Lire les users Furious ./read-all-users.sh # 2. Test dry-run python3 import-furious-to-zitadel.py --mode dry-run # 3. Test sur 3 users python3 import-furious-to-zitadel.py --mode test # 4. Vérification dans Zitadel UI # 5. Import production (les 85 restants) python3 import-furious-to-zitadel.py --mode prod # 6. Gérer les doublons (adapter DUPLICATES dans le script avant) nano merge-duplicates.py python3 merge-duplicates.py # 7. Extraire CSV de distribution python3 extract-distribution-csv.py # 8. Générer le mapping pour RBAC intranet python3 generate-roles-mapping.py # 9. Attribuer les rôles RBAC python3 assign-roles.py # 10. Copier le mapping vers l'intranet cp roles-mapping.json ~/docker/intranet/ cd ~/docker/intranet docker compose down docker compose up -d ``` --- ## ⚠️ Fichiers générés (sensibles) Ces fichiers contiennent des données sensibles, à **protéger** : | Fichier | Contenu | Action | |---|---|---| | `furious-users-raw.json` | Toutes les infos Furious des collaborateurs | chmod 600, ne pas commit | | `users-credentials.csv` | 89 lignes avec mdp temporaires | chmod 600, supprimer après distribution | | `distribution-teams.csv` | 88 lignes (Nom, Email, Mdp) pour Teams | chmod 600, supprimer après distribution | | `roles-mapping.json` | Mapping email → rôle | OK à partager avec le mainteneur | | `zitadelfuriousimportkey.json` | Clé privée RSA service account | chmod 600, ne JAMAIS partager | | `import.log` | Logs de l'import (peut contenir des emails) | chmod 600 | --- ## 🔄 Synchronisation continue (à mettre en place) Voir [docs/06-import-furious.md](../../docs/06-import-furious.md) section "Synchronisation périodique". Idée : workflow n8n quotidien à 3h du matin qui : 1. Compare la liste Furious vs Zitadel 2. Crée les nouveaux 3. Désactive les départs 4. Met à jour les rôles ⏱️ ~1 journée de dev. --- ## 📚 Voir aussi - [docs/06-import-furious.md](../../docs/06-import-furious.md) — Doc complète de l'import - [docs/07-rbac-intranet.md](../../docs/07-rbac-intranet.md) — Suite : attribution des rôles - [matrices/job-title-to-role.csv](../../matrices/job-title-to-role.csv) — Matrice de mapping