update api users and groups and users 14

This commit is contained in:
Alma 2025-04-09 21:53:38 +02:00
parent c8a4bd0074
commit d1780b748b
2 changed files with 48 additions and 46 deletions

View File

@ -63,13 +63,13 @@ export async function GET() {
const roles = await response.json(); const roles = await response.json();
// Filter out system roles // Filter out only Keycloak system roles
const filteredRoles = roles.filter((role: any) => const filteredRoles = roles.filter((role: any) =>
!role.name.startsWith('default-roles-') && !role.name.startsWith('default-roles-') &&
role.name !== 'offline_access' && !['offline_access', 'uma_authorization'].includes(role.name)
role.name !== 'uma_authorization'
); );
console.log("Available roles:", filteredRoles);
return NextResponse.json(filteredRoles); return NextResponse.json(filteredRoles);
} catch (error) { } catch (error) {
console.error("Error fetching roles:", error); console.error("Error fetching roles:", error);

View File

@ -420,47 +420,51 @@ export function UsersTable({ userRole = [] }: UsersTableProps) {
<DialogTrigger asChild> <DialogTrigger asChild>
<Button>Ajouter un utilisateur</Button> <Button>Ajouter un utilisateur</Button>
</DialogTrigger> </DialogTrigger>
<DialogContent> <DialogContent className="max-h-[85vh] overflow-y-auto">
<DialogHeader> <DialogHeader>
<DialogTitle>Nouvel utilisateur</DialogTitle> <DialogTitle>New User</DialogTitle>
</DialogHeader> </DialogHeader>
<form onSubmit={handleAddUser} className="space-y-4"> <form onSubmit={handleAddUser} className="space-y-3">
<div className="space-y-2"> <div className="grid grid-cols-2 gap-3">
<Label htmlFor="username">Username</Label> <div className="space-y-2">
<Input <Label htmlFor="username">Username</Label>
id="username" <Input
value={formData.username} id="username"
onChange={(e) => setFormData(prev => ({ ...prev, username: e.target.value.trim() }))} value={formData.username}
required onChange={(e) => setFormData(prev => ({ ...prev, username: e.target.value.trim() }))}
/> required
/>
</div>
<div className="space-y-2">
<Label htmlFor="email">Email</Label>
<Input
id="email"
type="email"
value={formData.email}
onChange={(e) => setFormData(prev => ({ ...prev, email: e.target.value.trim() }))}
required
/>
</div>
</div> </div>
<div className="space-y-2"> <div className="grid grid-cols-2 gap-3">
<Label htmlFor="firstName">First Name</Label> <div className="space-y-2">
<Input <Label htmlFor="firstName">First Name</Label>
id="firstName" <Input
value={formData.firstName} id="firstName"
onChange={(e) => setFormData(prev => ({ ...prev, firstName: e.target.value.trim() }))} value={formData.firstName}
required onChange={(e) => setFormData(prev => ({ ...prev, firstName: e.target.value.trim() }))}
/> required
</div> />
<div className="space-y-2"> </div>
<Label htmlFor="lastName">Last Name</Label> <div className="space-y-2">
<Input <Label htmlFor="lastName">Last Name</Label>
id="lastName" <Input
value={formData.lastName} id="lastName"
onChange={(e) => setFormData(prev => ({ ...prev, lastName: e.target.value.trim() }))} value={formData.lastName}
required onChange={(e) => setFormData(prev => ({ ...prev, lastName: e.target.value.trim() }))}
/> required
</div> />
<div className="space-y-2"> </div>
<Label htmlFor="email">Email</Label>
<Input
id="email"
type="email"
value={formData.email}
onChange={(e) => setFormData(prev => ({ ...prev, email: e.target.value.trim() }))}
required
/>
</div> </div>
<div className="space-y-2"> <div className="space-y-2">
<Label htmlFor="password">Password</Label> <Label htmlFor="password">Password</Label>
@ -474,7 +478,7 @@ export function UsersTable({ userRole = [] }: UsersTableProps) {
</div> </div>
<div className="space-y-2"> <div className="space-y-2">
<Label>Roles</Label> <Label>Roles</Label>
<div className="space-y-2"> <div className="grid grid-cols-2 gap-2 max-h-[120px] overflow-y-auto border rounded-md p-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">
<Checkbox <Checkbox
@ -489,14 +493,12 @@ export function UsersTable({ userRole = [] }: UsersTableProps) {
})); }));
}} }}
/> />
<Label htmlFor={`role-${role.id}`}>{role.name}</Label> <Label htmlFor={`role-${role.id}`} className="text-sm">{role.name}</Label>
</div> </div>
))} ))}
</div> </div>
</div> </div>
<Button type="submit" className="w-full"> <Button type="submit" className="w-full">Create User</Button>
Créer l'utilisateur
</Button>
</form> </form>
</DialogContent> </DialogContent>
</Dialog> </Dialog>