feat: add permission-gated navigation and admin access

This commit is contained in:
2026-06-16 16:16:03 +05:30
parent 893b49c701
commit 964b177ae1
18 changed files with 401 additions and 112 deletions

View File

@@ -6,6 +6,8 @@ import { Plus, ShieldCheck } from 'lucide-react';
import { PageHeader } from '@/components/page-header';
import { PoweredBy } from '@/components/powered-by';
import { Button } from '@/components/ui/button';
import { PERMISSIONS } from '@/constants/permissions';
import { PermissionGuard } from '@/guards';
import { useAppStore } from '@/store/app.store';
import type { Role } from '@/types';
@@ -41,7 +43,7 @@ export default function RolesPage() {
searchTerm: debouncedSearchTerm,
statusFilter,
});
const permissionsQuery = usePermissionsTreeQuery();
const permissionsQuery = usePermissionsTreeQuery(isSheetOpen);
const roleForm = useRoleForm({
organizationId,
permissionTree: permissionsQuery.permissionTree,
@@ -105,10 +107,12 @@ export default function RolesPage() {
description="Manage roles and permission access"
icon={ShieldCheck}
actions={
<Button onClick={openCreate}>
<Plus className="mr-2 size-4" />
Add Role
</Button>
<PermissionGuard permissions={PERMISSIONS.ROLE.CREATE}>
<Button onClick={openCreate}>
<Plus className="mr-2 size-4" />
Add Role
</Button>
</PermissionGuard>
}
/>