groupe-meditation/docs/93_MULTI_GROUPE.md

88 lines
2.5 KiB
Markdown
Raw Normal View History

2026-05-31 23:57:49 -04:00
# Isolation multi-groupe
Statut: référence technique
Public: mainteneurs, sysadmin
Dernière révision: 2026-06-01
L'application peut servir plusieurs groupes sous une même instance. Les groupes ne doivent pas avoir de liens d'interdépendance métier.
## Principe
Le groupe courant est déterminé par le membre authentifié et le `groupe_id` dans le jeton. Une requête authentifiée ne doit lire ou modifier que les données de ce groupe.
## Page publique
La page de connexion liste les groupes sous forme de tuiles. Chaque tuile affiche l'horaire et les coordonnées du groupe, puis le formulaire de connexion.
Le groupe de démonstration est toujours disponible sur une installation vanille.
## Données de groupe
Doivent être isolés par groupe:
- membres;
- invitations;
- postes;
- affectations;
- candidatures;
- rotations;
- rencontres;
- assemblées;
- présences;
- PV;
- propositions et décisions;
- collectes;
- dépenses;
- opérations bancaires;
- transactions comptables;
- réserves;
- mouvements de réserves;
- destinataires;
- contributions;
- littérature;
- ventes;
- jetons;
- événements;
- rapports;
- journal;
- historique.
## Tables sans `groupe_id` direct
Une table sans `groupe_id` direct est acceptable seulement si son parent isole strictement le groupe. Exemple: une présence peut être bornée par sa réunion.
## Routes
Toute route qui reçoit un ID depuis le client doit:
1. charger l'objet;
2. vérifier son appartenance au groupe courant;
3. refuser si l'objet n'appartient pas au groupe.
## Permissions
Les permissions de modules sont calculées depuis les postes du groupe courant. Un poste d'un groupe ne peut pas accorder d'accès dans un autre groupe.
## Sysadmin
Sysadmin est transversal pour l'administration technique. Ses actions doivent être limitées aux opérations prévues:
- gérer les groupes;
- réinitialiser un groupe;
- réinitialiser la démonstration;
- impersonifier.
## Démonstration
`Groupe Démonstration` est protégé et toujours placé en bas de la liste. Le bouton `Réinit` recrée ses données fictives sans toucher aux autres groupes.
## Tests à refaire lors de changements multi-groupe
- Créer deux groupes.
- Créer des membres dans chaque groupe.
- Vérifier que les listes de membres ne se croisent pas.
- Vérifier que les postes et permissions ne se croisent pas.
- Vérifier les rencontres, assemblées, finances, rapports et journal par groupe.
- Vérifier que l'impersonification reste dans le groupe du membre ciblé.