diff --git a/attached_assets/image_1754940633122.png b/attached_assets/image_1754940633122.png new file mode 100644 index 0000000..363436d Binary files /dev/null and b/attached_assets/image_1754940633122.png differ diff --git a/client/src/pages/Users.tsx b/client/src/pages/Users.tsx index e79d3ae..8fa237e 100644 --- a/client/src/pages/Users.tsx +++ b/client/src/pages/Users.tsx @@ -35,7 +35,7 @@ export default function UsersPage() { const [searchTerm, setSearchTerm] = useState(""); const [roleFilter, setRoleFilter] = useState("all"); const [showEditModal, setShowEditModal] = useState(false); - const [showGroupModal, setShowGroupModal] = useState(false); + // Removed showGroupModal - now integrated in edit form const [showCreateModal, setShowCreateModal] = useState(false); const [selectedUser, setSelectedUser] = useState(null); const [userGroups, setUserGroups] = useState([]); @@ -465,15 +465,26 @@ export default function UsersPage() { lastName: lastName, email: userData.email || "", password: "", - role: userData.role as "admin" | "manager" | "employee", + role: userData.role as "admin" | "manager" | "employee" | "directeur", }); setShowEditModal(true); }; - const handleGroupManager = (userData: UserWithGroups) => { - setSelectedUser(userData); - setUserGroups(userData.userGroups.map(ug => ug.groupId)); - setShowGroupModal(true); + + + // Function to handle group assignment in edit form + const handleToggleGroupInEdit = async (groupId: number, isCurrentlyAssigned: boolean) => { + if (!selectedUser) return; + + try { + if (isCurrentlyAssigned) { + await removeGroupMutation.mutateAsync({ userId: selectedUser.id, groupId }); + } else { + await assignGroupMutation.mutateAsync({ userId: selectedUser.id, groupId }); + } + } catch (error) { + // Error handling is done in mutations + } }; const handleSubmitEdit = (e: React.FormEvent) => { @@ -485,7 +496,7 @@ export default function UsersPage() { firstName: editForm.firstName, lastName: editForm.lastName, email: editForm.email, - // Rôle géré uniquement dans Administration > Gestion des Rôles + role: editForm.role, }; // Only include password if it's not empty @@ -775,16 +786,7 @@ export default function UsersPage() { > - + + + ); + })} + {safeGroups.length === 0 && ( +

Aucun groupe disponible

+ )} @@ -915,68 +958,7 @@ export default function UsersPage() { )} - {/* Group Management Modal */} - {showGroupModal && selectedUser && ( - { - setShowGroupModal(false); - setSelectedUser(null); - setUserGroups([]); - }}> - - - - Gérer les Magasins/Groupes - {selectedUser.name || `${selectedUser.firstName} ${selectedUser.lastName}`} - -

- Assigner ou retirer cet utilisateur des magasins/groupes -

-
- -
-
- -
- {groups.map((group) => { - const isAssigned = selectedUser.userGroups.some(ug => ug.groupId === group.id); - return ( -
-
-
- {group.name} -
- -
- ); - })} -
-
-
- -
-
- -
- )} {/* Create User Modal */} {showCreateModal && (