feat(permissions): more permissions for accessing via sidbar

This commit is contained in:
2025-03-10 16:17:57 -05:00
parent 22e050ebfa
commit 6c4e14fad3
3 changed files with 33 additions and 11 deletions

View File

@@ -19,7 +19,12 @@ export function AppSidebar() {
<Sidebar collapsible="icon"> <Sidebar collapsible="icon">
<SidebarContent> <SidebarContent>
<Header /> <Header />
{moduleActive("production") && <ProductionSideBar />} {moduleActive("production") && (
<ProductionSideBar
user={user}
moduleID={modules.filter((n) => n.name === "production")[0].module_id as string}
/>
)}
{moduleActive("logistics") && ( {moduleActive("logistics") && (
<LogisticsSideBar <LogisticsSideBar
user={user} user={user}

View File

@@ -15,7 +15,7 @@ const items = [
title: "Silo Adjustments", title: "Silo Adjustments",
url: "#", url: "#",
icon: Cylinder, icon: Cylinder,
role: ["technician", "supervisor", "manager", "admin", "systemAdmin"], role: ["admin", "systemAdmin"],
module: "logistics", module: "logistics",
active: true, active: true,
}, },
@@ -23,7 +23,7 @@ const items = [
title: "Bulk orders", title: "Bulk orders",
url: "#", url: "#",
icon: Truck, icon: Truck,
role: ["technician", "supervisor", "manager", "admin", "systemAdmin"], role: ["systemAdmin"],
module: "logistics", module: "logistics",
active: true, active: true,
}, },
@@ -31,7 +31,7 @@ const items = [
title: "Forecast", title: "Forecast",
url: "#", url: "#",
icon: Truck, icon: Truck,
role: ["technician", "supervisor", "manager", "admin", "systemAdmin"], role: ["systemAdmin"],
module: "logistics", module: "logistics",
active: true, active: true,
}, },
@@ -43,6 +43,14 @@ const items = [
module: "logistics", module: "logistics",
active: false, active: false,
}, },
{
title: "Material Helper",
url: "/materialHelper/consumption",
icon: Package,
role: ["technician", "supervisor", "manager", "admin", "systemAdmin"],
module: "logistics",
active: true,
},
]; ];
export function LogisticsSideBar({user, moduleID}: {user: User | null; moduleID: string}) { export function LogisticsSideBar({user, moduleID}: {user: User | null; moduleID: string}) {

View File

@@ -7,16 +7,21 @@ import {
SidebarMenuButton, SidebarMenuButton,
SidebarMenuItem, SidebarMenuItem,
} from "../../ui/sidebar"; } from "../../ui/sidebar";
import {hasPageAccess} from "@/utils/userAccess";
import {User} from "@/types/users";
const items = [ const items = [
{ {
title: "One Click Print", title: "One Click Print",
url: "/ocp", url: "/ocp",
icon: Printer, icon: Printer,
role: ["systemAdmin"],
module: "ocp",
active: true,
}, },
]; ];
export function ProductionSideBar() { export function ProductionSideBar({user, moduleID}: {user: User | null; moduleID: string}) {
return ( return (
<SidebarGroup> <SidebarGroup>
<SidebarGroupLabel>Production</SidebarGroupLabel> <SidebarGroupLabel>Production</SidebarGroupLabel>
@@ -24,12 +29,16 @@ export function ProductionSideBar() {
<SidebarMenu> <SidebarMenu>
{items.map((item) => ( {items.map((item) => (
<SidebarMenuItem key={item.title}> <SidebarMenuItem key={item.title}>
<>
{hasPageAccess(user, item.role, moduleID) && item.active && (
<SidebarMenuButton asChild> <SidebarMenuButton asChild>
<a href={item.url}> <a href={item.url}>
<item.icon /> <item.icon />
<span>{item.title}</span> <span>{item.title}</span>
</a> </a>
</SidebarMenuButton> </SidebarMenuButton>
)}
</>
</SidebarMenuItem> </SidebarMenuItem>
))} ))}
</SidebarMenu> </SidebarMenu>