From b8ae9757d4fa5266bf16231f56fe00c20985e19e Mon Sep 17 00:00:00 2001 From: wixarm Date: Mon, 23 Feb 2026 15:32:16 +0330 Subject: [PATCH] feat: admin category --- src/assets/images/svg/admin.svg | 4 ++++ src/routes/paths.ts | 4 +++- src/utils/getCategoryParameters.ts | 5 ++++- src/utils/getUserAvalableItems.ts | 19 +++++++++++++++++-- src/utils/getUserAvalablePaths.ts | 4 ++-- 5 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 src/assets/images/svg/admin.svg diff --git a/src/assets/images/svg/admin.svg b/src/assets/images/svg/admin.svg new file mode 100644 index 0000000..1c98786 --- /dev/null +++ b/src/assets/images/svg/admin.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/routes/paths.ts b/src/routes/paths.ts index 97b9a00..2310570 100644 --- a/src/routes/paths.ts +++ b/src/routes/paths.ts @@ -5,8 +5,10 @@ export const PROFILE = "/profile"; export const MENU = "/menu"; export const TRAINING = "/training"; -//Management +//Admin Routes export const PERMISSION_ACCESS = "/permission-access"; + +//Management export const USERS = "/users"; export const ORGANIZATIONS = "/organizations"; export const ROLES = "/roles"; diff --git a/src/utils/getCategoryParameters.ts b/src/utils/getCategoryParameters.ts index eb0c423..7d30b4b 100644 --- a/src/utils/getCategoryParameters.ts +++ b/src/utils/getCategoryParameters.ts @@ -27,12 +27,15 @@ import TagDistribtution from "../Pages/LiveStock/TagDistribution"; import TagDistribtutionDetails from "../Pages/LiveStock/TagDistributionDetails"; import Tags from "../partials/LiveStock/tagging/Tags"; -export const managementCategoryItems = [ +export const adminCategoryItems = [ { name: "permission_control", path: R.PERMISSION_ACCESS, component: Management, }, +]; + +export const managementCategoryItems = [ { name: "users", path: R.USERS, diff --git a/src/utils/getUserAvalableItems.ts b/src/utils/getUserAvalableItems.ts index 5454f14..d500969 100644 --- a/src/utils/getUserAvalableItems.ts +++ b/src/utils/getUserAvalableItems.ts @@ -1,6 +1,7 @@ import { ItemWithSubItems } from "../types/userPermissions"; import { filterByAccess } from "./filterByAccess"; import { + adminCategoryItems, feedInputCategoryItems, livestockCategoryItems, managementCategoryItems, @@ -11,6 +12,7 @@ import { unitCategoryItems, } from "./getCategoryParameters"; import { getUserAvalablePaths } from "./getUserAvalablePaths"; +import { useUserProfileStore } from "../context/zustand-store/userStore"; import LogoManagement from "../assets/images/svg/management.svg?react"; import LogoFeedInput from "../assets/images/svg/feed-input.svg?react"; import LogoWage from "../assets/images/svg/wage.svg?react"; @@ -19,6 +21,7 @@ import LogoPos from "../assets/images/svg/pos.svg?react"; import LogoTransactions from "../assets/images/svg/transactions.svg?react"; import LogoUnits from "../assets/images/svg/units.svg?react"; import LogoTagging from "../assets/images/svg/tagging.svg?react"; +import LogoAdmin from "../assets/images/svg/admin.svg?react"; type Item = { page_name: string; @@ -26,7 +29,7 @@ type Item = { }; export function getUserPermissions( - permissions: Item[] = [] + permissions: Item[] = [], ): ItemWithSubItems[] { if (!permissions || !permissions.length) { return []; @@ -47,11 +50,23 @@ export function getUserPermissions( const transactionItems = filterByAccess( permissions, - transactionCategoryItems + transactionCategoryItems, ); const items: ItemWithSubItems[] = []; + const profile = useUserProfileStore.getState().profile; + const isAdmin = profile?.role?.type?.key === "ADM"; + + if (isAdmin) { + items.push({ + en: "admin", + fa: "ادمین", + icon: LogoAdmin, + subItems: adminCategoryItems, + }); + } + if (managementItems.length) { items.push({ en: "management", diff --git a/src/utils/getUserAvalablePaths.ts b/src/utils/getUserAvalablePaths.ts index f0b48ce..ad6c3a0 100644 --- a/src/utils/getUserAvalablePaths.ts +++ b/src/utils/getUserAvalablePaths.ts @@ -22,7 +22,7 @@ type Item = { export function getUserAvalablePaths( category: string, - permissions: any[] = [] + permissions: any[] = [], ): SubItems[] { if (!Array.isArray(permissions)) { return []; @@ -32,7 +32,7 @@ export function getUserAvalablePaths( if (!permissions?.length) return []; const nameSet = new Set( - permissions.map((item: Item) => item?.page_name).filter(Boolean) + permissions.map((item: Item) => item?.page_name).filter(Boolean), ); return items?.filter((item) => item?.name && nameSet.has(item.name)) || [];