diff --git a/src/components/molecules/SidebarMenu.tsx b/src/components/molecules/SidebarMenu.tsx index 6a217dcc..4b85c2c8 100644 --- a/src/components/molecules/SidebarMenu.tsx +++ b/src/components/molecules/SidebarMenu.tsx @@ -2,6 +2,7 @@ import Link from 'next/link'; import Menu from '@/components/menu/Menu'; import { Icon } from '@iconify/react'; import { cn, isPathActive } from '@/lib/helper'; +import { useAuth } from '@/services/hooks/useAuth'; export interface SidebarMenuItem { type?: 'item' | 'title'; @@ -9,6 +10,7 @@ export interface SidebarMenuItem { link: string; icon?: string; submenu?: SidebarMenuItem[]; + permission?: string[]; } interface SidebarMenuItemProps { @@ -22,8 +24,17 @@ interface SidebarMenuProps { } const SidebarMenuItem = ({ item, activeLink }: SidebarMenuItemProps) => { + const { permissionCheck } = useAuth(); const isItemActive = isPathActive(activeLink, item.link); + const isUserPermitted = item.permission + ? item.permission?.some((permissionName) => permissionCheck(permissionName)) + : true; + + if (!isUserPermitted) { + return null; + } + const menuItemWithoutSubmenu = (
  • { const SidebarMenu = ({ menu, activeLink }: SidebarMenuProps) => { return ( - {menu.map((menuItem, menuIdx) => ( - - ))} + {menu.map((menuItem, menuIdx) => { + return ( + + ); + })} ); };