diff --git a/components/missions/missions-admin-panel.tsx b/components/missions/missions-admin-panel.tsx index a9574e54..b106a836 100644 --- a/components/missions/missions-admin-panel.tsx +++ b/components/missions/missions-admin-panel.tsx @@ -182,13 +182,20 @@ export function MissionsAdminPanel() { volontaires.includes(userId); }; - // Function to get user's role + // Function to get user's roles (can now have multiple) + const getUserRoles = (userId: string): UserRole[] => { + const roles: UserRole[] = []; + if (gardienDuTemps === userId) roles.push('temps'); + if (gardienDeLaParole === userId) roles.push('parole'); + if (gardienDeLaMemoire === userId) roles.push('memoire'); + if (volontaires.includes(userId)) roles.push('volontaire'); + return roles; + }; + + // For backwards compatibility with existing code const getUserRole = (userId: string): UserRole | null => { - if (gardienDuTemps === userId) return 'temps'; - if (gardienDeLaParole === userId) return 'parole'; - if (gardienDeLaMemoire === userId) return 'memoire'; - if (volontaires.includes(userId)) return 'volontaire'; - return null; + const roles = getUserRoles(userId); + return roles.length > 0 ? roles[0] : null; }; // Function to get role display name @@ -204,8 +211,11 @@ export function MissionsAdminPanel() { // Function to assign a user to a specific guardian role const assignGuardienRole = (userId: string, role: GuardienRole) => { - // Remove from any existing role first - removeUserFromAllRoles(userId); + // No longer removing user from existing roles to allow multiple roles + // Only remove from volunteers if they're currently a volunteer + if (volontaires.includes(userId)) { + setVolontaires(prev => prev.filter(id => id !== userId)); + } // Assign to new role if (role === 'temps') { @@ -1151,15 +1161,20 @@ export function MissionsAdminPanel() { {/* User role controls */} {isUserAssigned(user.id) ? (