Availability based on permissions

This commit is contained in:
cdricms
2025-02-19 16:16:47 +01:00
parent 446813315d
commit 2011ae93b6
26 changed files with 1071 additions and 794 deletions

View File

@@ -23,8 +23,10 @@ import {
UserRoundPlus,
} from "lucide-react";
import Link from "next/link";
import IUser from "@/interfaces/IUser";
import hasPermissions from "@/lib/hasPermissions";
export default function MembersTable() {
export default function MembersTable({ user }: { user: IUser }) {
const {
data: members,
error,
@@ -97,9 +99,11 @@ export default function MembersTable() {
<Button onClick={toggleSelectMode}>
{selectMode ? <CircleX /> : "Selectionner"}
</Button>
<Button onClick={() => handleOpenDialog(null)}>
<UserRoundPlus />
</Button>
{hasPermissions(user.roles, { users: ["insert"] }) && (
<Button onClick={() => handleOpenDialog(null)}>
<UserRoundPlus />
</Button>
)}
</div>
<div className="relative">
<ScrollArea className="h-full rounded-md border">
@@ -162,25 +166,35 @@ export default function MembersTable() {
<TableCell>{member.phone}</TableCell>
<TableCell>{member.role}</TableCell>
<TableCell className="text-right">
<Button
variant="outline"
size="sm"
className="mr-2"
onClick={() =>
handleOpenDialog(member)
}
>
<UserRoundPen />
</Button>
<Button
variant="destructive"
size="sm"
onClick={() =>
handleDelete(member.userId!)
}
>
<Trash2 />
</Button>
{hasPermissions(user.roles, {
users: ["update"],
}) && (
<Button
variant="outline"
size="sm"
className="mr-2"
onClick={() =>
handleOpenDialog(member)
}
>
<UserRoundPen />
</Button>
)}
{hasPermissions(user.roles, {
users: ["delete"],
}) && (
<Button
variant="destructive"
size="sm"
onClick={() =>
handleDelete(
member.userId!,
)
}
>
<Trash2 />
</Button>
)}
</TableCell>
</TableRow>
))}