Files
unionflow-server-api/unionflow/docs/PERMISSIONS_MATRIX.md
dahoud e8ad874015 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
2026-03-15 02:12:17 +00:00

302 lines
13 KiB
Markdown

# Matrice de Permissions UnionFlow - Pages Web
> Dernière mise à jour : 2026-03-02
> Cette matrice définit les rôles autorisés pour chaque page de l'application UnionFlow.
## Légende des Rôles
| Rôle | Code | Description |
|------|------|-------------|
| Super Admin | `SUPER_ADMIN` | Accès total système |
| Admin Organisation | `ADMIN` | Administrateur d'une organisation |
| Trésorier | `TRESORIER` | Gestion financière |
| Secrétaire | `SECRETAIRE` | Gestion administrative |
| Responsable Social | `RESPONSABLE_SOCIAL` | Gestion des aides sociales |
| Responsable Événements | `RESPONSABLE_EVENEMENTS` | Gestion des événements |
| Responsable Crédit | `RESPONSABLE_CREDIT` | Gestion épargne/crédit |
| Membre Bureau | `MEMBRE_BUREAU` | Membre du bureau exécutif |
| Membre Actif | `MEMBRE_ACTIF` | Membre actif avec cotisations à jour |
| Membre Simple | `MEMBRE_SIMPLE` | Membre avec accès limité |
---
## 1. Pages d'Administration (Super Admin uniquement)
| Page | Rôles Autorisés | Description |
|------|----------------|-------------|
| `/super-admin/dashboard.xhtml` | `SUPER_ADMIN` | Dashboard super-admin |
| `/super-admin/dashboard-enhanced.xhtml` | `SUPER_ADMIN` | Dashboard enrichi super-admin |
| `/super-admin/entites/gestion-enhanced.xhtml` | `SUPER_ADMIN` | Gestion des entités système |
| `/super-admin/roles/gestion.xhtml` | `SUPER_ADMIN` | Gestion des rôles système |
| `/super-admin/types/organisations.xhtml` | `SUPER_ADMIN` | Configuration types d'organisations |
---
## 2. Pages d'Administration d'Organisation
| Page | Rôles Autorisés | Description |
|------|----------------|-------------|
| `/admin/audit.xhtml` | `ADMIN,SUPER_ADMIN` | Journal d'audit |
| `/admin/backup.xhtml` | `ADMIN,SUPER_ADMIN` | Sauvegardes et restaurations |
| `/admin/settings.xhtml` | `ADMIN,SUPER_ADMIN` | Paramètres organisation |
| `/admin/users.xhtml` | `ADMIN,SUPER_ADMIN` | Gestion utilisateurs |
| `/secure/admin/utilisateurs.xhtml` | `ADMIN,SUPER_ADMIN` | Liste utilisateurs |
| `/secure/admin/audit.xhtml` | `ADMIN,SUPER_ADMIN` | Audit système |
| `/secure/admin/parametres.xhtml` | `ADMIN,SUPER_ADMIN` | Paramètres avancés |
| `/secure/admin/roles.xhtml` | `ADMIN,SUPER_ADMIN` | Gestion rôles organisation |
| `/admin/audit/journal.xhtml` | `ADMIN,SUPER_ADMIN` | Journal détaillé |
---
## 3. Pages de Gestion des Membres
| Page | Rôles Autorisés | Description |
|------|----------------|-------------|
| `/secure/membre/inscription.xhtml` | `SECRETAIRE,ADMIN` | Inscription nouveau membre |
| `/secure/membre/recherche.xhtml` | `SECRETAIRE,TRESORIER,RESPONSABLE_SOCIAL,RESPONSABLE_EVENEMENTS,ADMIN` | Recherche membres |
| `/secure/membre/profil.xhtml` | `SECRETAIRE,ADMIN` | Modification profil membre |
| `/secure/membre/import.xhtml` | `SECRETAIRE,ADMIN` | Import membres (CSV/Excel) |
| `/secure/membre/export.xhtml` | `SECRETAIRE,TRESORIER,ADMIN` | Export membres |
| `/secure/membre/cotisations.xhtml` | `TRESORIER,SECRETAIRE,ADMIN` | Suivi cotisations membres |
---
## 4. Pages de Gestion Financière
| Page | Rôles Autorisés | Description |
|------|----------------|-------------|
| `/admin/finance/caisse.xhtml` | `TRESORIER,ADMIN` | Gestion de caisse |
| `/secure/finance/tresorerie.xhtml` | `TRESORIER,ADMIN` | Trésorerie organisation |
| `/secure/finance/budgets.xhtml` | `TRESORIER,ADMIN` | Gestion budgets |
| `/secure/finance/bilans.xhtml` | `TRESORIER,ADMIN` | Bilans financiers |
| `/secure/comptabilite/gestion.xhtml` | `TRESORIER,ADMIN` | Comptabilité générale |
| `/admin/cotisations/gestion.xhtml` | `TRESORIER,SECRETAIRE,ADMIN` | Gestion cotisations |
| `/secure/cotisation/collect.xhtml` | `TRESORIER,ADMIN` | Collection cotisations |
| `/secure/cotisation/paiement.xhtml` | `TRESORIER,SECRETAIRE,ADMIN` | Paiement cotisations |
| `/secure/cotisation/reminders.xhtml` | `TRESORIER,SECRETAIRE,ADMIN` | Relances cotisations |
| `/secure/cotisation/report.xhtml` | `TRESORIER,ADMIN` | Rapports cotisations |
| `/secure/cotisation/rapports.xhtml` | `TRESORIER,ADMIN` | Rapports détaillés |
---
## 5. Pages de Gestion des Événements
| Page | Rôles Autorisés | Description |
|------|----------------|-------------|
| `/admin/evenements/liste.xhtml` | `RESPONSABLE_EVENEMENTS,SECRETAIRE,ADMIN` | Liste événements |
| `/admin/evenements/creation.xhtml` | `RESPONSABLE_EVENEMENTS,SECRETAIRE,ADMIN` | Création événement |
| `/admin/evenements/gestion.xhtml` | `RESPONSABLE_EVENEMENTS,SECRETAIRE,ADMIN` | Gestion événements |
| `/admin/evenements/participants.xhtml` | `RESPONSABLE_EVENEMENTS,SECRETAIRE,ADMIN` | Gestion participants |
| `/secure/evenement/creation.xhtml` | `RESPONSABLE_EVENEMENTS,SECRETAIRE,ADMIN` | Créer événement |
| `/secure/evenement/gestion.xhtml` | `RESPONSABLE_EVENEMENTS,SECRETAIRE,ADMIN` | Gérer événements |
| `/secure/evenement/create.xhtml` | `RESPONSABLE_EVENEMENTS,SECRETAIRE,ADMIN` | Formulaire création |
| `/secure/evenement/planification.xhtml` | `RESPONSABLE_EVENEMENTS,ADMIN` | Planification événements |
| `/secure/evenement/logistique.xhtml` | `RESPONSABLE_EVENEMENTS,ADMIN` | Logistique événements |
| `/secure/evenement/bilan.xhtml` | `RESPONSABLE_EVENEMENTS,SECRETAIRE,ADMIN` | Bilans événements |
| `/secure/evenement/reservations.xhtml` | `RESPONSABLE_EVENEMENTS,ADMIN` | Gestion réservations |
| `/secure/evenement/participants.xhtml` | `RESPONSABLE_EVENEMENTS,SECRETAIRE,ADMIN` | Liste participants |
| `/secure/evenement/calendar.xhtml` | `ALL` | Calendrier public événements |
| `/secure/evenement/calendrier.xhtml` | `ALL` | Calendrier événements |
| `/secure/evenement/participation.xhtml` | `ALL` | Mes participations |
---
## 6. Pages de Gestion des Aides Sociales
| Page | Rôles Autorisés | Description |
|------|----------------|-------------|
| `/admin/aides/gestion.xhtml` | `RESPONSABLE_SOCIAL,ADMIN` | Gestion aides sociales |
| `/admin/demandes/gestion.xhtml` | `RESPONSABLE_SOCIAL,ADMIN` | Gestion demandes |
| `/admin/demandes/gestion-old.xhtml` | `RESPONSABLE_SOCIAL,ADMIN` | Ancienne interface (deprecated) |
| `/admin/demandes/aide-sociale.xhtml` | `RESPONSABLE_SOCIAL,ADMIN` | Demandes aide sociale |
| `/secure/aide/demande.xhtml` | `ALL` | Formulaire demande aide |
| `/secure/aide/statistiques.xhtml` | `RESPONSABLE_SOCIAL,ADMIN` | Statistiques aides |
| `/secure/aide/historique.xhtml` | `ALL` | Mon historique d'aides |
---
## 7. Pages d'Adhésion
| Page | Rôles Autorisés | Description |
|------|----------------|-------------|
| `/secure/adhesion/liste.xhtml` | `SECRETAIRE,ADMIN` | Liste adhésions |
| `/secure/adhesion/demande.xhtml` | `ALL` | Formulaire demande adhésion |
| `/secure/adhesion/new.xhtml` | `SECRETAIRE,ADMIN` | Nouvelle adhésion |
| `/secure/adhesion/renouvellement.xhtml` | `ALL` | Renouvellement adhésion |
| `/secure/adhesion/validation.xhtml` | `SECRETAIRE,ADMIN` | Validation adhésions |
| `/secure/adhesion/history.xhtml` | `SECRETAIRE,ADMIN` | Historique adhésions |
| `/secure/adhesion/historique.xhtml` | `ALL` | Mon historique adhésions |
| `/secure/adhesion/pending.xhtml` | `SECRETAIRE,ADMIN` | Adhésions en attente |
| `/secure/adhesion/cartes-membres.xhtml` | `SECRETAIRE,ADMIN` | Impression cartes membres |
---
## 8. Pages de Rapports
| Page | Rôles Autorisés | Description |
|------|----------------|-------------|
| `/secure/reports.xhtml` | `TRESORIER,SECRETAIRE,ADMIN` | Rapports généraux |
| `/secure/rapport/details.xhtml` | `TRESORIER,SECRETAIRE,ADMIN` | Détails rapports |
| `/secure/rapport/export.xhtml` | `TRESORIER,SECRETAIRE,ADMIN` | Export rapports |
| `/secure/rapport/activites.xhtml` | `SECRETAIRE,ADMIN` | Rapport activités |
| `/secure/rapport/finances.xhtml` | `TRESORIER,ADMIN` | Rapport financier |
| `/secure/rapport/membres.xhtml` | `SECRETAIRE,ADMIN` | Rapport membres |
| `/secure/rapport/tableaux-bord.xhtml` | `TRESORIER,SECRETAIRE,ADMIN` | Tableaux de bord |
| `/admin/rapports/finances.xhtml` | `TRESORIER,ADMIN` | Rapports finances |
| `/admin/rapports/statistiques.xhtml` | `ADMIN` | Statistiques globales |
---
## 9. Pages Personnelles (Tous les membres authentifiés)
| Page | Rôles Autorisés | Description |
|------|----------------|-------------|
| `/secure/profile.xhtml` | `ALL` | Mon profil |
| `/secure/personnel/profil.xhtml` | `ALL` | Mon profil détaillé |
| `/secure/personnel/activites.xhtml` | `ALL` | Mes activités |
| `/secure/personnel/agenda.xhtml` | `ALL` | Mon agenda |
| `/secure/personnel/documents.xhtml` | `ALL` | Mes documents |
| `/secure/personnel/notifications.xhtml` | `ALL` | Mes notifications |
| `/secure/personnel/preferences.xhtml` | `ALL` | Mes préférences |
| `/secure/personnel/favoris.xhtml` | `ALL` | Mes favoris |
| `/secure/personnel/parametres.xhtml` | `ALL` | Mes paramètres |
| `/membre/cotisations.xhtml` | `ALL` | Mes cotisations |
| `/membre/dashboard.xhtml` | `MEMBRE_ACTIF` | Dashboard membre |
---
## 10. Pages d'Aide et Support (Tous)
| Page | Rôles Autorisés | Description |
|------|----------------|-------------|
| `/secure/aide/faq.xhtml` | `ALL` | FAQ |
| `/secure/aide/guide.xhtml` | `ALL` | Guide utilisateur |
| `/secure/aide/support.xhtml` | `ALL` | Support technique |
| `/secure/aide/tutoriels.xhtml` | `ALL` | Tutoriels vidéo |
| `/secure/aide/nouveautes.xhtml` | `ALL` | Nouveautés |
| `/secure/aide/apropos.xhtml` | `ALL` | À propos |
| `/secure/aide/documentation.xhtml` | `ALL` | Documentation |
| `/secure/aide/suggestions.xhtml` | `ALL` | Boîte à suggestions |
| `/secure/aide/tickets.xhtml` | `ALL` | Mes tickets support |
---
## 11. Pages de Communication
| Page | Rôles Autorisés | Description |
|------|----------------|-------------|
| `/secure/communication/notifications.xhtml` | `SECRETAIRE,ADMIN` | Envoi notifications masse |
---
## 12. Pages de Documents
| Page | Rôles Autorisés | Description |
|------|----------------|-------------|
| `/admin/documents/gestion.xhtml` | `SECRETAIRE,ADMIN` | Gestion documents |
| `/secure/documents/mes-documents.xhtml` | `ALL` | Mes documents personnels |
---
## 13. Pages Utilitaires
| Page | Rôles Autorisés | Description |
|------|----------------|-------------|
| `/secure/outils/exports-masse.xhtml` | `TRESORIER,SECRETAIRE,ADMIN` | Exports en masse |
| `/secure/stats.xhtml` | `ADMIN` | Statistiques système |
| `/secure/souscription/dashboard.xhtml` | `ADMIN` | Dashboard souscriptions |
---
## 14. Pages Publiques (Accès libre)
| Page | Rôles Autorisés | Description |
|------|----------------|-------------|
| `/public/home.xhtml` | Aucune auth requise | Page d'accueil |
| `/public/formulaires.xhtml` | Aucune auth requise | Formulaires publics |
---
## 15. Pages Système
| Page | Rôles Autorisés | Description |
|------|----------------|-------------|
| `/secure/access-denied.xhtml` | Tous (page erreur) | Accès refusé |
---
## Règles de Sécurité
### Hiérarchie des Rôles
Les rôles suivent une hiérarchie où les rôles supérieurs héritent des permissions des rôles inférieurs :
```
SUPER_ADMIN
└─ ADMIN_ORGANISATION
├─ TRESORIER
├─ SECRETAIRE
├─ RESPONSABLE_SOCIAL
├─ RESPONSABLE_EVENEMENTS
├─ RESPONSABLE_CREDIT
└─ MEMBRE_BUREAU
└─ MEMBRE_ACTIF
└─ MEMBRE_SIMPLE
```
### Principes de Sécurité
1. **Least Privilege** : Chaque utilisateur n'a accès qu'aux pages nécessaires à son rôle
2. **Defense in Depth** : Sécurité à 3 niveaux :
- Niveau 1 : Composant `page-access-control.xhtml` dans chaque page
- Niveau 2 : Vérification dans les beans backing (`@PostConstruct`)
- Niveau 3 : Sécurité backend (API REST)
3. **Deny by Default** : Si aucun rôle n'est spécifié, l'accès est refusé
4. **Audit Trail** : Tous les refus d'accès sont loggés
### Implémentation dans les Pages
Chaque page sécurisée doit inclure le composant de contrôle d'accès :
```xml
<ui:composition template="/templates/layout/main.xhtml">
<!-- Sécurisation de la page -->
<ui:include src="/templates/components/security/page-access-control.xhtml">
<ui:param name="allowedRoles" value="TRESORIER,ADMIN" />
</ui:include>
<ui:define name="content">
<!-- Contenu de la page -->
</ui:define>
</ui:composition>
```
### Code Helper pour Vérifications Rapides
```java
// Dans un bean backing
@Inject
PageSecurityBean pageSecurityBean;
// Vérifications
if (pageSecurityBean.canManageFinances()) {
// Action autorisée pour trésoriers
}
if (pageSecurityBean.isSimpleMember()) {
// Membre actif sans rôle administratif
}
```
---
## Maintenance
Cette matrice doit être mise à jour lorsque :
- Une nouvelle page est créée
- Un nouveau rôle est ajouté au système
- Les permissions d'une page existante changent
**Responsable** : Équipe Architecture
**Revue** : Trimestrielle ou à chaque release majeure