update api users and groups and users 13

This commit is contained in:
Alma 2025-04-09 21:46:04 +02:00
parent 4a9bfebecf
commit c8a4bd0074

View File

@ -37,6 +37,7 @@ import {
SelectTrigger, SelectTrigger,
SelectValue, SelectValue,
} from "@/components/ui/select"; } from "@/components/ui/select";
import { Checkbox } from "@/components/ui/checkbox";
interface User { interface User {
id: string; id: string;
@ -425,28 +426,30 @@ export function UsersTable({ userRole = [] }: UsersTableProps) {
</DialogHeader> </DialogHeader>
<form onSubmit={handleAddUser} className="space-y-4"> <form onSubmit={handleAddUser} className="space-y-4">
<div className="space-y-2"> <div className="space-y-2">
<Label htmlFor="username">Nom d'utilisateur</Label> <Label htmlFor="username">Username</Label>
<Input <Input
id="username" id="username"
value={formData.username} value={formData.username}
onChange={(e) => setFormData(prev => ({ ...prev, username: e.target.value }))} onChange={(e) => setFormData(prev => ({ ...prev, username: e.target.value.trim() }))}
required required
/> />
</div> </div>
<div className="space-y-2"> <div className="space-y-2">
<Label htmlFor="firstName">Prénom</Label> <Label htmlFor="firstName">First Name</Label>
<Input <Input
id="firstName" id="firstName"
value={formData.firstName} value={formData.firstName}
onChange={(e) => setFormData(prev => ({ ...prev, firstName: e.target.value }))} onChange={(e) => setFormData(prev => ({ ...prev, firstName: e.target.value.trim() }))}
required
/> />
</div> </div>
<div className="space-y-2"> <div className="space-y-2">
<Label htmlFor="lastName">Nom</Label> <Label htmlFor="lastName">Last Name</Label>
<Input <Input
id="lastName" id="lastName"
value={formData.lastName} value={formData.lastName}
onChange={(e) => setFormData(prev => ({ ...prev, lastName: e.target.value }))} onChange={(e) => setFormData(prev => ({ ...prev, lastName: e.target.value.trim() }))}
required
/> />
</div> </div>
<div className="space-y-2"> <div className="space-y-2">
@ -455,12 +458,12 @@ export function UsersTable({ userRole = [] }: UsersTableProps) {
id="email" id="email"
type="email" type="email"
value={formData.email} value={formData.email}
onChange={(e) => setFormData(prev => ({ ...prev, email: e.target.value }))} onChange={(e) => setFormData(prev => ({ ...prev, email: e.target.value.trim() }))}
required required
/> />
</div> </div>
<div className="space-y-2"> <div className="space-y-2">
<Label htmlFor="password">Mot de passe</Label> <Label htmlFor="password">Password</Label>
<Input <Input
id="password" id="password"
type="password" type="password"
@ -470,44 +473,26 @@ export function UsersTable({ userRole = [] }: UsersTableProps) {
/> />
</div> </div>
<div className="space-y-2"> <div className="space-y-2">
<Label htmlFor="roles">les</Label> <Label>Roles</Label>
<div className="flex flex-wrap gap-2"> <div className="space-y-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">
<input <Checkbox
type="checkbox"
id={`role-${role.id}`} id={`role-${role.id}`}
checked={formData.roles.includes(role.name)} checked={formData.roles.includes(role.name)}
onChange={(e) => { onCheckedChange={(checked) => {
setFormData(prev => ({ setFormData(prev => ({
...prev, ...prev,
roles: e.target.checked roles: checked
? [...prev.roles, role.name] ? [...prev.roles, role.name]
: prev.roles.filter(r => r !== role.name) : prev.roles.filter(r => r !== role.name)
})); }));
}} }}
/> />
<label htmlFor={`role-${role.id}`}>{role.name}</label> <Label htmlFor={`role-${role.id}`}>{role.name}</Label>
</div> </div>
))} ))}
</div> </div>
<div className="flex flex-wrap gap-2 mt-2">
{formData.roles.map(role => (
<span key={role} className="px-2 py-1 bg-gray-100 rounded-md text-sm">
{role}
<button
type="button"
onClick={() => setFormData(prev => ({
...prev,
roles: prev.roles.filter(r => r !== role)
}))}
className="ml-2 text-gray-500 hover:text-gray-700"
>
×
</button>
</span>
))}
</div>
</div> </div>
<Button type="submit" className="w-full"> <Button type="submit" className="w-full">
Créer l'utilisateur Créer l'utilisateur