From 7aca307ed4ecf2fb70543f6e7838f16249695367 Mon Sep 17 00:00:00 2001 From: "vluk@2fi-solutions.com.hk" Date: Wed, 14 Jan 2026 16:06:59 +0800 Subject: [PATCH] added menu item auth control --- .../NavigationContent/NavigationContent.tsx | 39 ++++++++++++------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/src/components/NavigationContent/NavigationContent.tsx b/src/components/NavigationContent/NavigationContent.tsx index 5448a6d..6161151 100644 --- a/src/components/NavigationContent/NavigationContent.tsx +++ b/src/components/NavigationContent/NavigationContent.tsx @@ -26,14 +26,7 @@ import Link from "next/link"; import { NAVIGATION_CONTENT_WIDTH } from "@/config/uiConfig"; import Logo from "../Logo"; import BugReportIcon from "@mui/icons-material/BugReport"; -import { - VIEW_USER, - MAINTAIN_USER, - VIEW_GROUP, - MAINTAIN_GROUP, - // Add more authorities as needed, e.g.: - TESTING, PROD, PACK, ADMIN, STOCK, Driver -} from "../../authorities"; +import { AUTH } from "../../authorities"; interface NavigationItem { icon: React.ReactNode; @@ -67,15 +60,18 @@ const NavigationContent: React.FC = () => { icon: , label: "Store Management", path: "", + requiredAbility: [AUTH.PURCHASE, AUTH.STOCK, AUTH.STOCK_TAKE, AUTH.STOCK_FG, AUTH.STOCK_IN_BIND, AUTH.ADMIN], children: [ { icon: , label: "Purchase Order", + requiredAbility: [AUTH.PURCHASE, AUTH.ADMIN], path: "/po", }, { icon: , label: "Pick Order", + requiredAbility: [AUTH.STOCK, AUTH.ADMIN], path: "/pickOrder", }, // { @@ -101,16 +97,19 @@ const NavigationContent: React.FC = () => { { icon: , label: "View item In-out And inventory Ledger", + requiredAbility: [AUTH.STOCK, AUTH.ADMIN], path: "/inventory", }, { icon: , label: "Stock Take Management", + requiredAbility: [AUTH.STOCK_TAKE, AUTH.ADMIN], path: "/stocktakemanagement", }, { icon: , label: "Stock Issue", + requiredAbility: [AUTH.STOCK, AUTH.STOCK_TAKE, AUTH.ADMIN], path: "/stockIssue", }, //TODO: anna @@ -122,16 +121,19 @@ const NavigationContent: React.FC = () => { { icon: , label: "Put Away Scan", + requiredAbility: [AUTH.STOCK, AUTH.STOCK_TAKE, AUTH.STOCK_IN_BIND, AUTH.ADMIN], path: "/putAway", }, { icon: , label: "Finished Good Order", + requiredAbility: [AUTH.STOCK_FG, AUTH.ADMIN], path: "/finishedGood", }, { icon: , label: "Stock Record", + requiredAbility: [AUTH.STOCK_TAKE, AUTH.STOCK_IN_BIND, AUTH.STOCK_FG, AUTH.ADMIN], path: "/stockRecord", }, ], @@ -140,11 +142,12 @@ const NavigationContent: React.FC = () => { icon: , label: "Delivery", path: "", - //requiredAbility: VIEW_DO, + requiredAbility: [AUTH.STOCK_FG, AUTH.ADMIN], children: [ { icon: , label: "Delivery Order", + requiredAbility: [AUTH.STOCK_FG, AUTH.ADMIN], path: "/do", }, ], @@ -187,6 +190,7 @@ const NavigationContent: React.FC = () => { icon: , label: "Scheduling", path: "", + requiredAbility: [AUTH.FORECAST, AUTH.ADMIN], children: [ { icon: , @@ -211,25 +215,30 @@ const NavigationContent: React.FC = () => { icon: , label: "Management Job Order", path: "", + requiredAbility: [AUTH.JOB_CREATE, AUTH.JOB_PICK, AUTH.JOB_PROD, AUTH.ADMIN], children: [ { icon: , label: "Search Job Order/ Create Job Order", + requiredAbility: [AUTH.JOB_CREATE, AUTH.ADMIN], path: "/jo", }, { icon: , label: "Job Order Pickexcution", + requiredAbility: [AUTH.JOB_PICK, AUTH.JOB_MAT, AUTH.ADMIN], path: "/jodetail", }, { icon: , label: "Job Order Production Process", + requiredAbility: [AUTH.JOB_PROD, AUTH.ADMIN], path: "/productionProcess", }, { icon: , label: "Bag Usage", + requiredAbility: [AUTH.JOB_PROD, AUTH.ADMIN], path: "/bag", }, ], @@ -238,40 +247,40 @@ const NavigationContent: React.FC = () => { icon: , label: "PS", path: "/ps", - requiredAbility: TESTING, + requiredAbility: AUTH.TESTING, isHidden: false, }, { icon: , label: "Printer Testing", path: "/testing", - requiredAbility: TESTING, + requiredAbility: [AUTH.TESTING, AUTH.ADMIN], isHidden: false, }, { icon: , label: "Report Management", path: "/report", - requiredAbility: TESTING, + requiredAbility: [AUTH.TESTING, AUTH.ADMIN], isHidden: false, }, { icon: , label: "Settings", path: "", - requiredAbility: [VIEW_USER, VIEW_GROUP], + requiredAbility: [AUTH.VIEW_USER, AUTH.ADMIN], children: [ { icon: , label: "User", path: "/settings/user", - requiredAbility: VIEW_USER, + requiredAbility: [AUTH.VIEW_USER, AUTH.ADMIN], }, { icon: , label: "User Group", path: "/settings/user", - requiredAbility: VIEW_GROUP, + requiredAbility: [AUTH.VIEW_GROUP, AUTH.ADMIN], }, // { // icon: ,