update api users and groups and users 7

This commit is contained in:
Alma 2025-04-09 21:05:23 +02:00
parent 9d0b462a67
commit 5ff393d6ca

View File

@ -190,7 +190,14 @@ export function UsersTable({ userRole = [] }: UsersTableProps) {
if (!user) return; if (!user) return;
setSelectedUser(user); setSelectedUser(user);
setFormData(prev => ({ ...prev, roles: user.roles || [] })); setFormData(prev => ({
...prev,
roles: user.roles || [],
username: user.username,
firstName: user.firstName || "",
lastName: user.lastName || "",
email: user.email || "",
}));
setManageRolesDialog(true); setManageRolesDialog(true);
}; };
@ -214,6 +221,15 @@ export function UsersTable({ userRole = [] }: UsersTableProps) {
await fetchUsers(); await fetchUsers();
setFormData({
username: "",
lastName: "",
firstName: "",
email: "",
password: "",
roles: [],
enabled: true,
});
setManageRolesDialog(false); setManageRolesDialog(false);
setSelectedUser(null); setSelectedUser(null);
@ -663,9 +679,9 @@ export function UsersTable({ userRole = [] }: UsersTableProps) {
<div className="space-y-4"> <div className="space-y-4">
<div className="space-y-2"> <div className="space-y-2">
<Label>Rôles</Label> <Label>Rôles</Label>
<div className="flex flex-wrap gap-2"> <div className="grid grid-cols-2 gap-2">
{roles.map((role) => ( {roles.map((role) => (
<div key={role.id} className="flex items-center space-x-2"> <div key={role.id} className="flex items-center space-x-2 p-2 rounded-md hover:bg-gray-100">
<input <input
type="checkbox" type="checkbox"
id={`manage-role-${role.id}`} id={`manage-role-${role.id}`}
@ -678,14 +694,23 @@ export function UsersTable({ userRole = [] }: UsersTableProps) {
: prev.roles.filter(r => r !== role.name) : prev.roles.filter(r => r !== role.name)
})); }));
}} }}
className="h-4 w-4 text-primary focus:ring-primary"
/> />
<label htmlFor={`manage-role-${role.id}`}>{role.name}</label> <label
htmlFor={`manage-role-${role.id}`}
className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
>
{role.name}
</label>
</div> </div>
))} ))}
</div> </div>
<div className="flex flex-wrap gap-2 mt-2"> <div className="flex flex-wrap gap-2 mt-4">
{formData.roles.map(role => ( {formData.roles.map(role => (
<span key={role} className="px-2 py-1 bg-gray-100 rounded-md text-sm"> <span
key={role}
className="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-primary text-primary-foreground"
>
{role} {role}
<button <button
type="button" type="button"
@ -693,7 +718,7 @@ export function UsersTable({ userRole = [] }: UsersTableProps) {
...prev, ...prev,
roles: prev.roles.filter(r => r !== role) roles: prev.roles.filter(r => r !== role)
}))} }))}
className="ml-2 text-gray-500 hover:text-gray-700" className="ml-1.5 inline-flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-full text-primary-foreground hover:bg-primary-foreground/20 focus:outline-none focus:ring-2 focus:ring-primary-foreground focus:ring-offset-2"
> >
× ×
</button> </button>
@ -701,9 +726,29 @@ export function UsersTable({ userRole = [] }: UsersTableProps) {
))} ))}
</div> </div>
</div> </div>
<Button onClick={handleUpdateRoles} className="w-full"> <div className="flex justify-end space-x-2">
Mettre à jour les rôles <Button
</Button> variant="outline"
onClick={() => {
setManageRolesDialog(false);
setSelectedUser(null);
setFormData({
username: "",
lastName: "",
firstName: "",
email: "",
password: "",
roles: [],
enabled: true,
});
}}
>
Annuler
</Button>
<Button onClick={handleUpdateRoles}>
Mettre à jour les rôles
</Button>
</div>
</div> </div>
</DialogContent> </DialogContent>
</Dialog> </Dialog>