missions button
This commit is contained in:
parent
5f84229fb0
commit
842c8b4a8a
@ -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) ? (
|
||||
<div className="flex items-center">
|
||||
<Badge
|
||||
className={`px-2 py-1 mr-2 ${
|
||||
getUserRole(user.id) === 'volontaire'
|
||||
? 'bg-gray-100 text-gray-800 hover:bg-gray-200'
|
||||
: 'bg-blue-100 text-blue-800 hover:bg-blue-200'
|
||||
}`}
|
||||
>
|
||||
{getRoleDisplayName(getUserRole(user.id))}
|
||||
</Badge>
|
||||
<div className="flex flex-wrap gap-1 mr-2">
|
||||
{getUserRoles(user.id).map((role) => (
|
||||
<Badge
|
||||
key={role}
|
||||
className={`px-2 py-1 ${
|
||||
role === 'volontaire'
|
||||
? 'bg-gray-100 text-gray-800 hover:bg-gray-200'
|
||||
: 'bg-blue-100 text-blue-800 hover:bg-blue-200'
|
||||
}`}
|
||||
>
|
||||
{getRoleDisplayName(role)}
|
||||
</Badge>
|
||||
))}
|
||||
</div>
|
||||
<Button
|
||||
variant="outline"
|
||||
size="sm"
|
||||
@ -1187,22 +1202,19 @@ export function MissionsAdminPanel() {
|
||||
<DropdownMenuContent align="end" className="bg-white border border-gray-200">
|
||||
<DropdownMenuItem
|
||||
onClick={() => assignGuardienRole(user.id, 'temps')}
|
||||
disabled={gardienDuTemps !== null}
|
||||
className={`cursor-pointer ${gardienDuTemps !== null ? 'opacity-50 cursor-not-allowed' : ''}`}
|
||||
className="cursor-pointer"
|
||||
>
|
||||
Gardien du Temps
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem
|
||||
onClick={() => assignGuardienRole(user.id, 'parole')}
|
||||
disabled={gardienDeLaParole !== null}
|
||||
className={`cursor-pointer ${gardienDeLaParole !== null ? 'opacity-50 cursor-not-allowed' : ''}`}
|
||||
className="cursor-pointer"
|
||||
>
|
||||
Gardien de la Parole
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem
|
||||
onClick={() => assignGuardienRole(user.id, 'memoire')}
|
||||
disabled={gardienDeLaMemoire !== null}
|
||||
className={`cursor-pointer ${gardienDeLaMemoire !== null ? 'opacity-50 cursor-not-allowed' : ''}`}
|
||||
className="cursor-pointer"
|
||||
>
|
||||
Gardien de la Mémoire
|
||||
</DropdownMenuItem>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user