feat: expand multi-tenant architecture and role management in TODO
- Updated migration plan to include a complete user model with roles (ADMIN, MANAGER, USER) and hierarchical relationships. - Added detailed phases for implementing role-based permissions and collaborative features, enhancing user management and task assignment. - Structured UI/UX considerations for different user roles, ensuring tailored experiences and improved navigation.
This commit is contained in:
91
TODO.md
91
TODO.md
@@ -197,32 +197,89 @@ src/services/
|
|||||||
|
|
||||||
#### **Architecture actuelle → Multi-tenant**
|
#### **Architecture actuelle → Multi-tenant**
|
||||||
- **Problème** : App mono-utilisateur avec données globales
|
- **Problème** : App mono-utilisateur avec données globales
|
||||||
- **Solution** : Transformation en app multi-utilisateurs avec isolation des données
|
- **Solution** : Transformation en app multi-utilisateurs avec isolation des données + système de rôles
|
||||||
|
|
||||||
#### **Plan de migration**
|
#### **Plan de migration**
|
||||||
- [ ] **Phase 1: Authentification**
|
- [ ] **Phase 1: Authentification**
|
||||||
- [ ] Système de login/mot de passe (NextAuth.js ou custom)
|
- [ ] Système de login/mot de passe (NextAuth.js)
|
||||||
- [ ] Gestion des sessions sécurisées
|
- [ ] Gestion des sessions sécurisées
|
||||||
- [ ] Pages de connexion/inscription/mot de passe oublié
|
- [ ] Pages de connexion/inscription/mot de passe oublié
|
||||||
- [ ] Middleware de protection des routes
|
- [ ] Middleware de protection des routes
|
||||||
|
|
||||||
- [ ] **Phase 2: Modèle de données multi-tenant**
|
- [ ] **Phase 2: Modèle de données multi-tenant + Rôles**
|
||||||
- [ ] Ajouter `userId` à toutes les tables (tasks, daily, tags, preferences, etc.)
|
- [ ] **Modèle User complet**
|
||||||
- [ ] Migration des données existantes vers un utilisateur par défaut
|
- [ ] Table `users` (id, email, password, name, role, createdAt, updatedAt)
|
||||||
- [ ] Contraintes de base de données pour l'isolation
|
- [ ] Enum `UserRole` : `ADMIN`, `MANAGER`, `USER`
|
||||||
- [ ] Index sur `userId` pour les performances
|
- [ ] Champs optionnels : avatar, timezone, language
|
||||||
|
- [ ] **Relations hiérarchiques**
|
||||||
|
- [ ] Table `user_teams` pour les relations manager → users
|
||||||
|
- [ ] Champ `managerId` dans users (optionnel, référence vers un manager)
|
||||||
|
- [ ] Support des équipes multiples par utilisateur
|
||||||
|
- [ ] **Migration des données existantes**
|
||||||
|
- [ ] Créer un utilisateur admin par défaut avec toutes les données actuelles
|
||||||
|
- [ ] Ajouter `userId` à toutes les tables (tasks, daily, tags, preferences, etc.)
|
||||||
|
- [ ] Contraintes de base de données pour l'isolation
|
||||||
|
- [ ] Index sur `userId` pour les performances
|
||||||
|
|
||||||
- [ ] **Phase 3: Services et API**
|
- [ ] **Phase 3: Système de rôles et permissions**
|
||||||
- [ ] Modifier tous les services pour filtrer par `userId`
|
- [ ] **Rôle ADMIN**
|
||||||
- [ ] Middleware d'injection automatique du `userId` dans les requêtes
|
- [ ] Gestion complète des utilisateurs (CRUD)
|
||||||
- [ ] Validation que chaque utilisateur ne voit que ses données
|
- [ ] Assignation/modification des rôles
|
||||||
- [ ] API d'administration (optionnel)
|
- [ ] Accès à toutes les données système (analytics globales)
|
||||||
|
- [ ] Configuration système (intégrations Jira/TFS globales)
|
||||||
|
- [ ] Gestion des équipes et hiérarchies
|
||||||
|
- [ ] **Rôle MANAGER**
|
||||||
|
- [ ] Vue sur les tâches/daily de ses équipiers
|
||||||
|
- [ ] Assignation de tâches à ses équipiers
|
||||||
|
- [ ] Analytics d'équipe (métriques, deadlines, performance)
|
||||||
|
- [ ] Création de tâches pour son équipe
|
||||||
|
- [ ] Accès aux rapports de son équipe
|
||||||
|
- [ ] **Rôle USER**
|
||||||
|
- [ ] Accès uniquement à ses propres données
|
||||||
|
- [ ] Réception de tâches assignées par son manager
|
||||||
|
- [ ] Gestion de son daily/kanban personnel
|
||||||
|
- [ ] **Middleware de permissions**
|
||||||
|
- [ ] Validation des droits d'accès par route
|
||||||
|
- [ ] Helper functions `canAccess()`, `canManage()`, `isAdmin()`
|
||||||
|
- [ ] Protection automatique des API routes
|
||||||
|
|
||||||
- [ ] **Phase 4: UI et UX**
|
- [ ] **Phase 4: Services et API avec rôles**
|
||||||
- [ ] Header avec profil utilisateur et déconnexion
|
- [ ] **Services utilisateurs**
|
||||||
- [ ] Onboarding pour nouveaux utilisateurs
|
- [ ] `user-management.ts` : CRUD utilisateurs (admin only)
|
||||||
- [ ] Gestion du profil utilisateur
|
- [ ] `team-management.ts` : Gestion des équipes (admin/manager)
|
||||||
- [ ] Partage optionnel entre utilisateurs (équipes)
|
- [ ] `role-permissions.ts` : Logique des permissions
|
||||||
|
- [ ] **Modification des services existants**
|
||||||
|
- [ ] Tous les services filtrent par `userId` OU permissions manager
|
||||||
|
- [ ] Middleware d'injection automatique du `userId` + `userRole`
|
||||||
|
- [ ] Services analytics étendus pour les managers
|
||||||
|
- [ ] Validation que chaque utilisateur ne voit que ses données autorisées
|
||||||
|
|
||||||
|
- [ ] **Phase 5: UI et UX multi-rôles**
|
||||||
|
- [ ] **Interface Admin**
|
||||||
|
- [ ] Page de gestion des utilisateurs (/admin/users)
|
||||||
|
- [ ] Création/modification/suppression d'utilisateurs
|
||||||
|
- [ ] Assignation des rôles et équipes
|
||||||
|
- [ ] Dashboard admin avec métriques globales
|
||||||
|
- [ ] **Interface Manager**
|
||||||
|
- [ ] Vue équipe avec tâches de tous les équipiers
|
||||||
|
- [ ] Assignation de tâches à l'équipe
|
||||||
|
- [ ] Dashboard manager avec analytics d'équipe
|
||||||
|
- [ ] Gestion des deadlines et priorités d'équipe
|
||||||
|
- [ ] **Interface commune**
|
||||||
|
- [ ] Header avec profil utilisateur, rôle et déconnexion
|
||||||
|
- [ ] Onboarding différencié par rôle
|
||||||
|
- [ ] Navigation adaptée aux permissions
|
||||||
|
- [ ] Indicateurs visuels du rôle actuel
|
||||||
|
|
||||||
|
- [ ] **Phase 6: Fonctionnalités collaboratives**
|
||||||
|
- [ ] **Assignation de tâches**
|
||||||
|
- [ ] Managers peuvent créer et assigner des tâches
|
||||||
|
- [ ] Notifications de nouvelles tâches assignées
|
||||||
|
- [ ] Suivi du statut des tâches assignées
|
||||||
|
- [ ] **Partage et visibilité**
|
||||||
|
- [ ] Tâches partagées entre équipiers
|
||||||
|
- [ ] Commentaires et collaboration sur les tâches
|
||||||
|
- [ ] Historique des modifications par utilisateur
|
||||||
|
|
||||||
#### **Considérations techniques**
|
#### **Considérations techniques**
|
||||||
- **Base de données** : Ajouter `userId` partout + contraintes
|
- **Base de données** : Ajouter `userId` partout + contraintes
|
||||||
|
|||||||
Reference in New Issue
Block a user