Fixed creation of users + better frontend handling of permissions

This commit is contained in:
cdricms
2025-03-06 17:34:52 +01:00
parent 3c6038bce1
commit 7cb633b4c6
46 changed files with 1511 additions and 909 deletions

View File

@@ -41,6 +41,10 @@ export default function RolesAndPermissions({ user }: { user: IUser }) {
const [newRoleName, setNewRoleName] = useState<string>("");
const [isDialogOpen, setIsDialogOpen] = useState<boolean>(false);
const { roles: rolesPerm } = hasPermissions(user.roles, {
roles: ["insert"],
} as const);
const { data: permissions } = useApi<PermissionsGrouped>(
"/permissions/grouped",
{},
@@ -80,7 +84,7 @@ export default function RolesAndPermissions({ user }: { user: IUser }) {
<div className="container mx-auto p-4 space-y-6">
<div className="flex justify-between items-center">
<h1 className="text-2xl font-bold">Rôles et Permissions</h1>
{hasPermissions(user.roles, { roles: ["insert"] }) && (
{rolesPerm.insert && (
<Dialog open={isDialogOpen} onOpenChange={setIsDialogOpen}>
<DialogTrigger asChild>
<Button>
@@ -135,14 +139,17 @@ interface RoleCardProps {
}
function RoleCard({ role, onDelete, permissions, user }: RoleCardProps) {
const { roles, permissions: permPerms } = hasPermissions(user.roles, {
roles: ["delete", "update"],
permissions: ["update"],
} as const);
return (
<Card>
<CardHeader className="flex flex-row items-center justify-between space-y-0 pb-2">
<CardTitle>{toTitleCase(role.name)}</CardTitle>
<Button
disabled={
!hasPermissions(user.roles, { roles: ["delete"] })
}
disabled={!roles.delete}
variant="destructive"
size="icon"
onClick={onDelete}
@@ -155,10 +162,11 @@ function RoleCard({ role, onDelete, permissions, user }: RoleCardProps) {
return (
<ResourceSection
disabled={
!hasPermissions(user.roles, {
permissions: ["update"],
roles: ["update"],
})
!(roles.update && permPerms.update)
// !hasPermissions(user.roles, {
// permissions: ["update"],
// roles: ["update"],
// })
}
key={res}
resource={res}