feat: admin category
This commit is contained in:
4
src/assets/images/svg/admin.svg
Normal file
4
src/assets/images/svg/admin.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg fill="#000000" width="800px" height="800px" viewBox="0 0 1920 1920" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M276.941 440.584v565.722c0 422.4 374.174 625.468 674.71 788.668l8.02 4.292 8.131-4.292c300.537-163.2 674.71-366.268 674.71-788.668V440.584l-682.84-321.657L276.94 440.584Zm682.73 1479.529c-9.262 0-18.523-2.372-26.993-6.89l-34.9-18.974C588.095 1726.08 164 1495.906 164 1006.306V404.78c0-21.91 12.65-41.788 32.414-51.162L935.727 5.42c15.134-7.228 32.866-7.228 48 0l739.313 348.2c19.765 9.374 32.414 29.252 32.414 51.162v601.525c0 489.6-424.207 719.774-733.779 887.943l-34.899 18.975c-8.47 4.517-17.731 6.889-27.105 6.889Zm467.158-547.652h-313.412l-91.595-91.482v-83.803H905.041v-116.78h-83.69l-58.503-58.504c-1.92.113-3.84.113-5.76.113-176.075 0-319.285-143.21-319.285-319.285 0-176.075 143.21-319.398 319.285-319.398 176.075 0 319.285 143.323 319.285 319.398 0 1.92 0 3.84-.113 5.647l350.57 350.682v313.412Zm-266.654-112.941h153.713v-153.713L958.462 750.155l3.953-37.27c1.017-123.897-91.595-216.621-205.327-216.621S550.744 588.988 550.744 702.72c0 113.845 92.612 206.344 206.344 206.344l47.21-5.309 63.811 63.7h149.873v116.78h116.781v149.986l25.412 25.299Zm-313.4-553.57c0 46.758-37.949 84.706-84.706 84.706-46.758 0-84.706-37.948-84.706-84.706s37.948-84.706 84.706-84.706c46.757 0 84.706 37.948 84.706 84.706" fill-rule="evenodd"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -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";
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)) || [];
|
||||
|
||||
Reference in New Issue
Block a user