missions button
This commit is contained in:
parent
5f84229fb0
commit
842c8b4a8a
@ -182,13 +182,20 @@ export function MissionsAdminPanel() {
|
|||||||
volontaires.includes(userId);
|
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 => {
|
const getUserRole = (userId: string): UserRole | null => {
|
||||||
if (gardienDuTemps === userId) return 'temps';
|
const roles = getUserRoles(userId);
|
||||||
if (gardienDeLaParole === userId) return 'parole';
|
return roles.length > 0 ? roles[0] : null;
|
||||||
if (gardienDeLaMemoire === userId) return 'memoire';
|
|
||||||
if (volontaires.includes(userId)) return 'volontaire';
|
|
||||||
return null;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Function to get role display name
|
// Function to get role display name
|
||||||
@ -204,8 +211,11 @@ export function MissionsAdminPanel() {
|
|||||||
|
|
||||||
// Function to assign a user to a specific guardian role
|
// Function to assign a user to a specific guardian role
|
||||||
const assignGuardienRole = (userId: string, role: GuardienRole) => {
|
const assignGuardienRole = (userId: string, role: GuardienRole) => {
|
||||||
// Remove from any existing role first
|
// No longer removing user from existing roles to allow multiple roles
|
||||||
removeUserFromAllRoles(userId);
|
// 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
|
// Assign to new role
|
||||||
if (role === 'temps') {
|
if (role === 'temps') {
|
||||||
@ -1151,15 +1161,20 @@ export function MissionsAdminPanel() {
|
|||||||
{/* User role controls */}
|
{/* User role controls */}
|
||||||
{isUserAssigned(user.id) ? (
|
{isUserAssigned(user.id) ? (
|
||||||
<div className="flex items-center">
|
<div className="flex items-center">
|
||||||
<Badge
|
<div className="flex flex-wrap gap-1 mr-2">
|
||||||
className={`px-2 py-1 mr-2 ${
|
{getUserRoles(user.id).map((role) => (
|
||||||
getUserRole(user.id) === 'volontaire'
|
<Badge
|
||||||
? 'bg-gray-100 text-gray-800 hover:bg-gray-200'
|
key={role}
|
||||||
: 'bg-blue-100 text-blue-800 hover:bg-blue-200'
|
className={`px-2 py-1 ${
|
||||||
}`}
|
role === 'volontaire'
|
||||||
>
|
? 'bg-gray-100 text-gray-800 hover:bg-gray-200'
|
||||||
{getRoleDisplayName(getUserRole(user.id))}
|
: 'bg-blue-100 text-blue-800 hover:bg-blue-200'
|
||||||
</Badge>
|
}`}
|
||||||
|
>
|
||||||
|
{getRoleDisplayName(role)}
|
||||||
|
</Badge>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
size="sm"
|
size="sm"
|
||||||
@ -1187,22 +1202,19 @@ export function MissionsAdminPanel() {
|
|||||||
<DropdownMenuContent align="end" className="bg-white border border-gray-200">
|
<DropdownMenuContent align="end" className="bg-white border border-gray-200">
|
||||||
<DropdownMenuItem
|
<DropdownMenuItem
|
||||||
onClick={() => assignGuardienRole(user.id, 'temps')}
|
onClick={() => assignGuardienRole(user.id, 'temps')}
|
||||||
disabled={gardienDuTemps !== null}
|
className="cursor-pointer"
|
||||||
className={`cursor-pointer ${gardienDuTemps !== null ? 'opacity-50 cursor-not-allowed' : ''}`}
|
|
||||||
>
|
>
|
||||||
Gardien du Temps
|
Gardien du Temps
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
<DropdownMenuItem
|
<DropdownMenuItem
|
||||||
onClick={() => assignGuardienRole(user.id, 'parole')}
|
onClick={() => assignGuardienRole(user.id, 'parole')}
|
||||||
disabled={gardienDeLaParole !== null}
|
className="cursor-pointer"
|
||||||
className={`cursor-pointer ${gardienDeLaParole !== null ? 'opacity-50 cursor-not-allowed' : ''}`}
|
|
||||||
>
|
>
|
||||||
Gardien de la Parole
|
Gardien de la Parole
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
<DropdownMenuItem
|
<DropdownMenuItem
|
||||||
onClick={() => assignGuardienRole(user.id, 'memoire')}
|
onClick={() => assignGuardienRole(user.id, 'memoire')}
|
||||||
disabled={gardienDeLaMemoire !== null}
|
className="cursor-pointer"
|
||||||
className={`cursor-pointer ${gardienDeLaMemoire !== null ? 'opacity-50 cursor-not-allowed' : ''}`}
|
|
||||||
>
|
>
|
||||||
Gardien de la Mémoire
|
Gardien de la Mémoire
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user