Issue #28: feat: Support multi-rôles pour les utilisateurs
- State:
CLOSED
- Milestone:
Jalon 0: Fondations Techniques ✅
- Labels:
enhancement,phase:vps track:software,priority:high
- Assignees:
Unassigned
- Created:
2025-10-27
- Updated:
2025-11-13
- URL:
Description
## Context
Dans le contexte associatif belge, une même personne peut avoir plusieurs rôles dans une copropriété. Par exemple :
- Un propriétaire qui est aussi syndic bénévole
- Un propriétaire qui est aussi comptable
- Un syndic qui gère plusieurs organisations
## Problème actuel
- La table `users` a un champ `role` unique (VARCHAR)
- Un utilisateur ne peut avoir qu'un seul rôle à la fois
- Impossible de modéliser les cas multi-rôles courants en associatif
## Solutions possibles
### Option 1: Table de jonction (recommandée)
- Créer une table `user_roles` avec `user_id`, `role`, `organization_id`
- Permet plusieurs rôles par organisation
- Nécessite refactoring de l'authentification et des permissions
### Option 2: Array de rôles
- Ajouter `secondary_roles` (TEXT[] ou JSONB) à la table users
- Garder `role` principal pour compatibilité
- Plus simple mais moins flexible
### Option 3: Email aliases
- Créer des utilisateurs séparés avec +suffixe (pierre+syndic@email.be)
- Solution temporaire, pas idéale UX
## Tâches
- [ ] Choisir l'approche (probablement Option 1)
- [ ] Créer migration pour table `user_roles`
- [ ] Refactorer `AuthenticatedUser` middleware
- [ ] Adapter les handlers de permissions
- [ ] Ajouter sélecteur de rôle dans l'UI (si multi-rôles dans même org)
- [ ] Mettre à jour le seed avec cas multi-rôles
- [ ] Tests d'intégration
## Labels
enhancement, authentication, database