feat: WebSocket temps réel + Finance Workflow + corrections

- Task #6: WebSocket /ws/dashboard + Kafka events (5 topics)
  * Backend: KafkaEventProducer, KafkaEventConsumer
  * Mobile: WebSocketService (reconnection, heartbeat, typed events)
  * DashboardBloc: Auto-refresh depuis WebSocket events

- Finance Workflow: approbations + budgets (backend + mobile)
  * Backend: entities, services, resources, migrations Flyway V6
  * Mobile: features finance_workflow complète avec BLoC

- Corrections DI: interfaces IRepository partout
  * IProfileRepository, IOrganizationRepository, IMembreRepository
  * GetIt configuré avec @injectable

- Spec-Kit: constitution + templates mis à jour
  * .specify/memory/constitution.md enrichie
  * Templates agent, plan, spec, tasks, checklist

- Nettoyage: fichiers temporaires supprimés

Signed-off-by: lions dev Team
This commit is contained in:
dahoud
2026-03-15 02:12:17 +00:00
parent bbc409de9d
commit e8ad874015
635 changed files with 58160 additions and 20674 deletions

View File

@@ -0,0 +1,530 @@
# Configuration Utilisateurs et Rôles - UnionFlow
**Date**: 2026-03-01
**Version**: 1.0.0
**Auteur**: UnionFlow Team
---
## Table des matières
1. [Vue d'ensemble](#vue-densemble)
2. [Organisations de test](#organisations-de-test)
3. [Structure des rôles](#structure-des-rôles)
4. [Comptes utilisateurs](#comptes-utilisateurs)
5. [Matrice de permissions](#matrice-de-permissions)
6. [Guide de test](#guide-de-test)
7. [Instructions techniques](#instructions-techniques)
---
## Vue d'ensemble
Cette documentation décrit la configuration complète des utilisateurs et rôles pour les tests de la plateforme UnionFlow, avec deux organisations types :
- **MUKEFI** — Mutuelle d'épargne et de crédit
- **MESKA** — Association communautaire
**Objectif** : Permettre de tester tous les workflows et cas d'usage de l'application selon les différents profils utilisateurs et types d'organisations.
---
## Organisations de test
### 🏦 MUKEFI - Mutuelle d'Épargne et de Crédit
- **Nom complet**: Mutuelle d'Épargne et de Crédit des Fonctionnaires et Indépendants
- **Type**: `MUTUELLE_EPARGNE_CREDIT`
- **Email**: contact@mukefi.org
- **Téléphone**: +225 07 00 00 00 01
- **Site web**: https://mukefi.org
- **Fondation**: 2020-01-15
- **Enregistrement**: MUT-CI-2020-001
**Modules activés** :
- ✅ Cotisations
- ✅ Épargne & Crédit (MEC)
- ✅ Comptabilité OHADA
- ✅ Documents (1 Go)
- ✅ Notifications multi-canal
**Cas d'usage** :
- Gestion de l'épargne des membres
- Attribution de crédits
- Suivi des remboursements
- Comptabilité SYSCOHADA
- Gestion des cotisations périodiques
---
### 🤝 MESKA - Association Communautaire
- **Nom complet**: Mouvement d'Entraide et de Solidarité de Koumassi et Adjamé
- **Type**: `ASSOCIATION`
- **Email**: contact@meska.org
- **Téléphone**: +225 07 00 00 00 02
- **Site web**: https://meska.org
- **Fondation**: 2018-06-20
- **Enregistrement**: ASSO-CI-2018-045
**Modules activés** :
- ✅ Cotisations
- ✅ Événements
- ✅ Solidarité (aide sociale)
- ✅ Documents (1 Go)
- ✅ Notifications multi-canal
**Cas d'usage** :
- Organisation d'événements communautaires
- Gestion des demandes d'aide sociale
- Solidarité entre membres
- Cotisations des adhérents
- Communication et annonces
---
## Structure des rôles
### Hiérarchie des rôles
```
SUPER_ADMIN (Plateforme)
ADMIN_ORGANISATION (Organisation)
┌─────────────┬──────────────────┬───────────────────┬─────────────────┐
│ TRESORIER │ SECRETAIRE │ RESPONSABLE_SOCIAL│ RESP_EVENEMENTS │
└─────────────┴──────────────────┴───────────────────┴─────────────────┘
↓ ↓ ↓ ↓
RESPONSABLE_CREDIT (Mutuelles)
MEMBRE_BUREAU
MEMBRE_ACTIF
MEMBRE_SIMPLE
```
### Descriptions détaillées
#### 🔧 SUPER_ADMIN
- **Description**: Super administrateur - Accès total plateforme multi-organisations
- **Portée**: Toute la plateforme
- **Droits**: Gestion de toutes les organisations, configuration système, utilisateurs Keycloak
- **Nombre recommandé**: 1-2 par plateforme
#### 👨‍💼 ADMIN_ORGANISATION
- **Description**: Administrateur d'une organisation - Accès total à son organisation
- **Portée**: Une organisation spécifique
- **Droits**: Gestion complète de l'organisation (membres, finances, événements, etc.)
- **Nombre recommandé**: 1-3 par organisation
#### 💰 TRESORIER
- **Description**: Trésorier - Gestion financière, comptabilité, épargne/crédit
- **Portée**: Finances de l'organisation
- **Droits**: Comptabilité, trésorerie, budgets, rapports financiers
- **Nombre recommandé**: 1-2 par organisation
#### 📝 SECRETAIRE
- **Description**: Secrétaire - Gestion administrative, membres, adhésions, documents
- **Portée**: Administration de l'organisation
- **Droits**: Membres, adhésions, documents, communication, événements
- **Nombre recommandé**: 1-2 par organisation
#### ❤️ RESPONSABLE_SOCIAL
- **Description**: Responsable social - Gestion aide sociale et solidarité
- **Portée**: Aide sociale de l'organisation
- **Droits**: Demandes d'aide, évaluation sociale, suivi bénéficiaires, fonds de solidarité
- **Nombre recommandé**: 1-2 par association
#### 📅 RESPONSABLE_EVENEMENTS
- **Description**: Responsable événements - Gestion événements et logistique
- **Portée**: Événements de l'organisation
- **Droits**: Création événements, planification, logistique, participations
- **Nombre recommandé**: 1-2 par association
#### 🏦 RESPONSABLE_CREDIT
- **Description**: Responsable crédit - Gestion épargne/crédit (mutuelles)
- **Portée**: Épargne et crédit (mutuelles uniquement)
- **Droits**: Demandes de crédit, épargne, remboursements
- **Nombre recommandé**: 1-2 par mutuelle
#### 🎖️ MEMBRE_BUREAU
- **Description**: Membre du bureau - Accès étendu consultation et actions
- **Portée**: Organisation
- **Droits**: Consultation étendue, participation aux décisions
- **Nombre recommandé**: 3-10 par organisation
#### ✅ MEMBRE_ACTIF
- **Description**: Membre actif - Consultation et actions de base
- **Portée**: Organisation
- **Droits**: Profil, événements, documents partagés, cotisations
- **Nombre recommandé**: Illimité
#### 👤 MEMBRE_SIMPLE
- **Description**: Membre simple - Consultation uniquement
- **Portée**: Organisation
- **Droits**: Consultation de son profil et informations publiques
- **Nombre recommandé**: Illimité
---
## Comptes utilisateurs
### 🔧 Super-Admin
| Username | Email | Mot de passe | Rôle | Organisation |
|----------|-------|--------------|------|--------------|
| `superadmin` | superadmin@unionflow.test | `Test@123` | SUPER_ADMIN | - (Toutes) |
**Usage** : Administration plateforme, gestion multi-organisations, configuration système
---
### 🏦 Comptes MUKEFI (Mutuelle)
| Username | Email | Mot de passe | Rôle | Fonction |
|----------|-------|--------------|------|----------|
| `admin.mukefi` | admin.mukefi@unionflow.test | `Test@123` | ADMIN_ORGANISATION | Administrateur MUKEFI |
| `tresorier.mukefi` | tresorier.mukefi@unionflow.test | `Test@123` | TRESORIER | Trésorier MUKEFI |
| `secretaire.mukefi` | secretaire.mukefi@unionflow.test | `Test@123` | SECRETAIRE | Secrétaire MUKEFI |
| `credit.mukefi` | credit.mukefi@unionflow.test | `Test@123` | RESPONSABLE_CREDIT | Responsable Crédit MUKEFI |
| `membre.mukefi` | membre.mukefi@unionflow.test | `Test@123` | MEMBRE_ACTIF | Membre actif MUKEFI |
---
### 🤝 Comptes MESKA (Association)
| Username | Email | Mot de passe | Rôle | Fonction |
|----------|-------|--------------|------|----------|
| `admin.meska` | admin.meska@unionflow.test | `Test@123` | ADMIN_ORGANISATION | Administrateur MESKA |
| `secretaire.meska` | secretaire.meska@unionflow.test | `Test@123` | SECRETAIRE | Secrétaire MESKA |
| `social.meska` | social.meska@unionflow.test | `Test@123` | RESPONSABLE_SOCIAL | Responsable Social MESKA |
| `evenements.meska` | evenements.meska@unionflow.test | `Test@123` | RESPONSABLE_EVENEMENTS | Responsable Événements MESKA |
| `membre.meska` | membre.meska@unionflow.test | `Test@123` | MEMBRE_ACTIF | Membre actif MESKA |
---
## Matrice de permissions
### Légende
- ✅ = Accès complet (lecture + écriture)
- 👁️ = Lecture seule
- ❌ = Pas d'accès
### Matrice complète
| Menu / Fonctionnalité | SUPER_ADMIN | ADMIN_ORG | TRESO | SECRE | R_SOCIAL | R_EVENT | R_CREDIT | M_BUREAU | M_ACTIF | M_SIMPLE |
|----------------------|-------------|-----------|-------|-------|----------|---------|----------|----------|---------|----------|
| **Dashboard** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 👁️ |
| **Super Administration** | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Dashboard Super-Admin | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Gestion Entités | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Types d'Organisation | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Configuration Système | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| **Administration** | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ |
| ↳ Gestion Cotisations | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Paramètres Système | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Rôles Applicatifs | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Audit Applicatif | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Utilisateurs Keycloak | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| **Gestion des Membres** | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | 👁️ | ❌ |
| ↳ Nouvelle Inscription | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Liste des Membres | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | 👁️ | ❌ |
| ↳ Import/Export Membres | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| **Organisations** | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| **Adhésions** | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ |
| ↳ Validation Adhésions | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Cartes de Membres | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| **Gestion Financière** | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ |
| ↳ Cotisations | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ |
| ↳ Relances | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Budgets | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Trésorerie | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Comptabilité | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Épargne/Crédit | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
| **Aide Sociale** | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ |
| ↳ Nouvelle Demande | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ |
| ↳ Traitement Demandes | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Évaluation Sociale | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Fonds de Solidarité | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| **Événements** | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | 👁️ | ❌ |
| ↳ Nouvel Événement | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| ↳ Planification | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| ↳ Logistique | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| ↳ Calendrier | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | 👁️ | ❌ |
| **Communication** | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| ↳ SMS/Email en masse | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Annonces | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| **Documents** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| ↳ Modèles/Templates | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Archivage | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Signatures Électroniques | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| **Formation** | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | 👁️ | ❌ |
| **Rapports et Analyses** | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ |
| ↳ Rapport Financier | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Exports Personnalisés | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| **Outils** | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ |
| ↳ Imports de Données | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Sauvegardes | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ Maintenance | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| ↳ APIs Externes | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| **Mon Espace Personnel** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| **Aide et Support** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
---
## Guide de test
### Scénarios de test par organisation
#### 🏦 MUKEFI (Mutuelle) - Scénarios de test
##### Scénario 1 : Demande de crédit (Membre → Responsable Crédit → Trésorier)
1. **Connexion** : `membre.mukefi` / `Test@123`
- ✅ Vérifier que seuls les menus "Mon Espace Personnel" et "Événements" (lecture) sont visibles
- ✅ Aller dans "Mon Profil" → Vérifier les informations
- ❌ Tenter d'accéder à "Gestion Financière" → Doit être bloqué
2. **Connexion** : `credit.mukefi` / `Test@123`
- ✅ Menu "Gestion Financière" → "Trésorerie" visible
- ✅ Créer une nouvelle demande de crédit
- ✅ Vérifier la liste des demandes en attente
- ❌ Accès "Comptabilité" → Doit être bloqué (réservé au trésorier)
3. **Connexion** : `tresorier.mukefi` / `Test@123`
- ✅ Accéder à "Gestion Financière" → "Comptabilité"
- ✅ Valider la demande de crédit
- ✅ Générer un rapport financier
- ✅ Vérifier les bilans
##### Scénario 2 : Inscription d'un nouveau membre (Secrétaire)
1. **Connexion** : `secretaire.mukefi` / `Test@123`
- ✅ Menu "Gestion des Membres" → "Nouvelle Inscription"
- ✅ Remplir le formulaire d'inscription
- ✅ Uploader les documents requis
- ✅ Aller dans "Adhésions" → "Validation des Demandes"
- ✅ Valider l'adhésion du nouveau membre
- ✅ Imprimer la carte de membre
##### Scénario 3 : Gestion complète (Admin Organisation)
1. **Connexion** : `admin.mukefi` / `Test@123`
- ✅ Vérifier que TOUS les menus sont visibles sauf "Super Administration"
- ✅ Dashboard → Consulter les KPIs de la mutuelle
- ✅ Membres → Voir la liste complète
- ✅ Finances → Consulter la trésorerie
- ✅ Rapports → Générer le rapport mensuel
---
#### 🤝 MESKA (Association) - Scénarios de test
##### Scénario 1 : Organisation d'un événement communautaire
1. **Connexion** : `evenements.meska` / `Test@123`
- ✅ Menu "Événements" → "Nouvel Événement"
- ✅ Créer un événement "Journée de solidarité"
- ✅ Définir la date, lieu, nombre de participants
- ✅ Aller dans "Logistique"
- ✅ Planifier les besoins matériels
- ✅ Envoyer les invitations
2. **Connexion** : `membre.meska` / `Test@123`
- ✅ Menu "Événements" → "Calendrier"
- ✅ Voir l'événement "Journée de solidarité"
- ✅ S'inscrire à l'événement
- ❌ Tenter de modifier l'événement → Doit être bloqué
##### Scénario 2 : Demande d'aide sociale
1. **Connexion** : `membre.meska` / `Test@123`
- ✅ Menu "Aide Sociale" → "Nouvelle Demande"
- ✅ Remplir le formulaire de demande d'aide
- ✅ Uploader les justificatifs
- ✅ Soumettre la demande
2. **Connexion** : `social.meska` / `Test@123`
- ✅ Menu "Aide Sociale" → "Traitement des Demandes"
- ✅ Voir la nouvelle demande
- ✅ Accéder à "Évaluation Sociale"
- ✅ Évaluer la situation du demandeur
- ✅ Approuver ou rejeter la demande
- ✅ Définir le montant de l'aide
3. **Connexion** : `admin.meska` / `Test@123`
- ✅ Valider l'aide approuvée par le responsable social
- ✅ Vérifier le fonds de solidarité
##### Scénario 3 : Communication avec les membres
1. **Connexion** : `secretaire.meska` / `Test@123`
- ✅ Menu "Communication" → "Annonces Officielles"
- ✅ Créer une annonce pour l'assemblée générale
- ✅ Aller dans "Campagnes Email"
- ✅ Envoyer un email à tous les membres
- ✅ Menu "Documents" → "Modèles et Templates"
- ✅ Créer un modèle de convocation
---
### Tests de sécurité
#### Test 1 : Élévation de privilèges
1. Connexion avec `membre.mukefi`
2. Tenter d'accéder directement aux URLs réservées :
- `/pages/admin/cotisations/gestion` → ❌ Doit être bloqué
- `/pages/super-admin/dashboard` → ❌ Doit être bloqué
- `/pages/admin/users` → ❌ Doit être bloqué
#### Test 2 : Séparation des organisations
1. Connexion avec `admin.mukefi`
2. Tenter de voir les membres de MESKA → ❌ Doit être bloqué
3. Tenter de modifier une organisation autre que MUKEFI → ❌ Doit être bloqué
#### Test 3 : Isolation des rôles
1. Connexion avec `tresorier.mukefi`
2. Tenter d'accéder à "Gestion des Membres" → ❌ Doit être bloqué
3. Tenter d'accéder à "Événements" → ❌ Doit être bloqué
---
## Instructions techniques
### Prérequis
- **Keycloak** : En cours d'exécution sur `http://localhost:8180`
- **Backend UnionFlow** : En cours d'exécution sur `http://localhost:8085`
- **Frontend UnionFlow** : En cours d'exécution sur `http://localhost:8086`
- **Base de données** : PostgreSQL avec migrations Flyway exécutées
### Installation
#### 1. Configuration Keycloak
```bash
# Exécuter le script de configuration Keycloak
cd unionflow/scripts
bash keycloak-setup.sh
```
**Résultat attendu** :
- ✅ 10 rôles créés
- ✅ 11 utilisateurs créés
- ✅ Rôles assignés correctement
#### 2. Création des organisations en base de données
**Option A : Via migration Flyway** (Recommandé)
```bash
# Redémarrer le backend pour exécuter la migration V3.0
# La migration V3.0__create_test_organisations.sql sera exécutée automatiquement
```
**Option B : Via SQL direct**
```bash
# Se connecter à PostgreSQL
psql -h localhost -U skyfile -d unionflow
# Exécuter le script SQL
\i unionflow/scripts/create-organisations.sql
```
**Résultat attendu** :
- ✅ Organisation MUKEFI créée
- ✅ Organisation MESKA créée
#### 3. Vérification
1. **Accéder à Keycloak Admin Console**
- URL : `http://localhost:8180/admin`
- Realm : `unionflow`
- Vérifier que tous les utilisateurs et rôles sont présents
2. **Tester la connexion**
- Aller sur `http://localhost:8086`
- Se connecter avec `admin.mukefi` / `Test@123`
- Vérifier que les menus appropriés sont visibles
### Structure des fichiers
```
unionflow/
├── scripts/
│ ├── keycloak-setup.sh # Configuration Keycloak
│ ├── keycloak-setup.ps1 # Version PowerShell
│ ├── keycloak-setup.py # Version Python
│ ├── create-organisations.sql # SQL pour organisations
│ └── create-organisations-api.sh # Création via API
├── unionflow-server-impl-quarkus/
│ └── src/main/resources/db/migration/
│ └── V3.0__create_test_organisations.sql
├── unionflow-client-quarkus-primefaces-freya/
│ ├── src/main/java/dev/lions/unionflow/client/bean/
│ │ └── MenuBean.java # Logique de visibilité
│ └── src/main/resources/META-INF/resources/templates/components/layout/
│ └── menu.xhtml # Menu avec permissions
└── docs/
└── CONFIGURATION_UTILISATEURS_ROLES.md # Cette documentation
```
### Dépannage
#### Problème : Les menus ne s'affichent pas correctement
**Solution** :
1. Vérifier que le JWT contient les rôles :
```bash
# Décoder le JWT sur https://jwt.io
# Vérifier la présence de "groups": ["ADMIN_ORGANISATION", ...]
```
2. Vérifier les logs du backend :
```bash
# Chercher les erreurs OIDC
grep -i "oidc\|jwt\|role" logs/unionflow-server.log
```
#### Problème : Impossible de se connecter
**Solution** :
1. Vérifier que Keycloak est accessible
2. Vérifier que le client `unionflow-server` est configuré
3. Vérifier le secret du client dans `application.properties`
#### Problème : Organisations non créées
**Solution** :
1. Vérifier que Flyway a exécuté la migration V3.0
2. Vérifier les logs Flyway au démarrage du backend
3. Exécuter manuellement le SQL si nécessaire
---
## Conclusion
Cette configuration complète permet de tester tous les workflows de UnionFlow avec des cas d'usage réalistes pour deux types d'organisations différents :
- **MUKEFI** (Mutuelle) : Focus sur l'épargne, le crédit et la comptabilité
- **MESKA** (Association) : Focus sur les événements et la solidarité
Chaque rôle a des permissions spécifiques qui permettent de valider la séparation des responsabilités et la sécurité de l'application.
**Prochaines étapes** :
1. Tester tous les scénarios documentés
2. Identifier les bugs ou incohérences
3. Ajuster les permissions si nécessaire
4. Documenter les cas d'usage supplémentaires
---
**Contact** : UnionFlow Team
**Version** : 1.0.0
**Dernière mise à jour** : 2026-03-01