# 🔐 Configuration Architecture Rôles UnionFlow dans Keycloak

Ce repository contient tous les scripts nécessaires pour configurer complètement l'architecture des rôles UnionFlow dans Keycloak en utilisant exclusivement des commandes curl.

## 📋 Vue d'ensemble

L'architecture UnionFlow comprend **8 rôles métier hiérarchiques** avec **8 comptes de test** correspondants, permettant de tester tous les cas d'usage de l'application mobile.

### 🏗️ Architecture des Rôles

```
SUPER_ADMINISTRATEUR (100) ← Équipe technique UnionFlow
    ↓
ADMINISTRATEUR_ORGANISATION (85) ← Président/Directeur
    ↓
RESPONSABLE_TECHNIQUE (80) ← Secrétaire général/IT
RESPONSABLE_FINANCIER (75) ← Trésorier/Comptable  
RESPONSABLE_MEMBRES (70) ← RH/Gestionnaire communauté
    ↓
MEMBRE_ACTIF (50) ← Membre engagé/Organisateur
    ↓
MEMBRE_SIMPLE (30) ← Membre cotisant standard
    ↓
VISITEUR (0) ← Personne intéressée/Non-membre
```

## 🚀 Scripts Disponibles

| Script | Description | Usage |
|--------|-------------|-------|
| `setup-unionflow-keycloak.sh` | **Configuration complète** - Crée tous les rôles et comptes | `./setup-unionflow-keycloak.sh` |
| `verify-unionflow-keycloak.sh` | **Vérification** - Teste la configuration et génère un rapport | `./verify-unionflow-keycloak.sh` |
| `test-mobile-auth.sh` | **Test authentification** - Simule l'auth mobile OAuth2 | `./test-mobile-auth.sh [username]` |
| `cleanup-unionflow-keycloak.sh` | **Nettoyage** - Supprime complètement la configuration | `./cleanup-unionflow-keycloak.sh` |

## 📦 Prérequis

### Environnement
- **Keycloak** : Accessible sur `http://192.168.1.145:8180`
- **Realm** : `unionflow` (doit exister)
- **Client** : `unionflow-mobile` (doit être configuré)
- **Admin** : `admin/admin`

### Outils système
```bash
# Vérifier la disponibilité des outils
curl --version
openssl version
base64 --version
```

### Permissions
```bash
# Rendre les scripts exécutables
chmod +x *.sh
```

## 🔧 Installation et Configuration

### Étape 1 : Configuration initiale

```bash
# 1. Cloner ou télécharger les scripts
# 2. Vérifier que Keycloak est accessible
curl -I http://192.168.1.145:8180

# 3. Lancer la configuration complète
./setup-unionflow-keycloak.sh
```

### Étape 2 : Vérification

```bash
# Vérifier que tout est correctement configuré
./verify-unionflow-keycloak.sh
```

### Étape 3 : Test d'authentification

```bash
# Tester tous les comptes
./test-mobile-auth.sh

# Tester un compte spécifique
./test-mobile-auth.sh marie.active
```

## 👥 Comptes de Test Créés

| Rôle | Username | Email | Password | Niveau |
|------|----------|-------|----------|---------|
| **SUPER_ADMINISTRATEUR** | `superadmin` | `superadmin@unionflow.dev` | `SuperAdmin123!` | 100 |
| **ADMINISTRATEUR_ORGANISATION** | `admin.org` | `admin@association-dev.fr` | `AdminOrg123!` | 85 |
| **RESPONSABLE_TECHNIQUE** | `tech.lead` | `tech@association-dev.fr` | `TechLead123!` | 80 |
| **RESPONSABLE_FINANCIER** | `tresorier` | `tresorier@association-dev.fr` | `Tresorier123!` | 75 |
| **RESPONSABLE_MEMBRES** | `rh.manager` | `rh@association-dev.fr` | `RhManager123!` | 70 |
| **MEMBRE_ACTIF** | `marie.active` | `marie@association-dev.fr` | `Marie123!` | 50 |
| **MEMBRE_SIMPLE** | `jean.simple` | `jean@association-dev.fr` | `Jean123!` | 30 |
| **VISITEUR** | `visiteur` | `visiteur@example.com` | `Visiteur123!` | 0 |

## 📱 Intégration Application Mobile

### Configuration Flutter

```dart
// Configuration Keycloak dans l'app mobile
const keycloakConfig = {
  'serverUrl': 'http://192.168.1.145:8180',
  'realm': 'unionflow',
  'clientId': 'unionflow-mobile',
  'redirectUri': 'dev.lions.unionflow-mobile://auth/callback',
};
```

### Test d'authentification

```bash
# Tester l'authentification avec le compte marie.active
./test-mobile-auth.sh marie.active

# Résultat attendu :
# ✓ marie.active (marie@association-dev.fr) - Authentification réussie
# ✓ Tokens obtenus avec succès
# ✓ Informations utilisateur récupérées
```

## 🔍 Dashboards par Rôle

Chaque rôle a accès à son dashboard spécifique :

### 🔴 Super Administrateur
- **Dashboard** : Command Center système
- **Fonctionnalités** : Métriques globales, gestion multi-organisations, monitoring

### 🔵 Administrateur Organisation  
- **Dashboard** : Vue d'ensemble organisation
- **Fonctionnalités** : KPI organisation, gestion membres/finances, rapports

### 🟢 Responsable Technique
- **Dashboard** : Outils techniques
- **Fonctionnalités** : Configuration, workflows, gestion événements

### 🟡 Responsable Financier
- **Dashboard** : Analytics financiers
- **Fonctionnalités** : Budget, cotisations, rapports comptables

### 🟣 Responsable Membres
- **Dashboard** : Gestion communauté
- **Fonctionnalités** : Engagement membres, communication, solidarité

### 🟠 Membre Actif
- **Dashboard** : Activity Center personnel
- **Fonctionnalités** : Mes événements, contributions, engagement

### ⚪ Membre Simple
- **Dashboard** : Vue personnelle
- **Fonctionnalités** : Profil, cotisations, événements disponibles

### 🔵 Visiteur
- **Dashboard** : Landing page attractive
- **Fonctionnalités** : Découverte organisation, événements publics, inscription

## 🛠️ Dépannage

### Problèmes courants

#### 1. Erreur de connexion Keycloak
```bash
# Vérifier que Keycloak est accessible
curl -I http://192.168.1.145:8180

# Si erreur, vérifier l'IP et le port
```

#### 2. Token d'administration invalide
```bash
# Vérifier les credentials admin
curl -X POST "http://192.168.1.145:8180/realms/master/protocol/openid-connect/token" \
  -d "username=admin&password=admin&grant_type=password&client_id=admin-cli"
```

#### 3. Rôles ou utilisateurs non créés
```bash
# Relancer la configuration
./cleanup-unionflow-keycloak.sh
./setup-unionflow-keycloak.sh
```

#### 4. Authentification mobile échoue
```bash
# Vérifier la configuration du client unionflow-mobile
# S'assurer que les redirect URIs sont corrects
```

### Logs de débogage

```bash
# Activer les logs détaillés
export DEBUG=1
./setup-unionflow-keycloak.sh

# Vérifier les réponses curl
curl -v [commande...]
```

## 🔄 Maintenance

### Mise à jour des rôles
```bash
# 1. Sauvegarder la configuration actuelle
./verify-unionflow-keycloak.sh > backup-config.txt

# 2. Nettoyer
./cleanup-unionflow-keycloak.sh

# 3. Reconfigurer avec les nouveaux paramètres
./setup-unionflow-keycloak.sh
```

### Ajout de nouveaux comptes
```bash
# Modifier le script setup-unionflow-keycloak.sh
# Ajouter les nouveaux comptes dans la section appropriée
# Relancer la configuration
```

## 📊 Monitoring

### Vérification périodique
```bash
# Script de vérification quotidienne
./verify-unionflow-keycloak.sh

# Test d'authentification hebdomadaire
./test-mobile-auth.sh
```

### Métriques importantes
- ✅ 8/8 rôles configurés
- ✅ 8/8 comptes de test fonctionnels
- ✅ 100% des authentifications réussies
- ✅ Tokens JWT valides avec rôles

## 🚀 Prochaines Étapes

1. **Intégration Backend** : Mettre à jour les annotations `@RolesAllowed` dans le code Java
2. **Synchronisation Mobile** : Adapter les dashboards selon les nouveaux rôles
3. **Tests E2E** : Implémenter des tests automatisés complets
4. **Documentation** : Créer la documentation utilisateur par rôle

## 📞 Support

En cas de problème :
1. Consulter les logs des scripts
2. Vérifier la configuration Keycloak via l'interface admin
3. Tester manuellement les endpoints avec curl
4. Utiliser le script de nettoyage et reconfigurer si nécessaire

---

**🎉 Configuration UnionFlow Keycloak - Prête pour la production !**
