update api users and groups and users 14
This commit is contained in:
parent
c8a4bd0074
commit
d1780b748b
@ -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);
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user