diff --git a/src/Components/AppRoutes/index.js b/src/Components/AppRoutes/index.js index 98ff276..6b38012 100644 --- a/src/Components/AppRoutes/index.js +++ b/src/Components/AppRoutes/index.js @@ -1,6 +1,5 @@ import { Route, Routes } from "react-router-dom"; import Dashboard from "../../Pages/Dashboard"; -import GroupTasks from "../../Pages/GroupTasks"; import { Constants, WebSocketContext, @@ -13,6 +12,8 @@ import AdminAreaRoles from "../../Pages/AdminArea/Roles"; import AdminAreaLogs from "../../Pages/AdminArea/Logs"; import AllUsers from "../../Pages/AllUsers"; import { useContext } from "react"; +import GroupTasks from "../../Pages/GroupTasks/Overview"; +import GroupTasksHistory from "../../Pages/GroupTasks/History"; export default function AppRoutes() { const webSocketContext = useContext(WebSocketContext); @@ -29,6 +30,16 @@ export default function AppRoutes() { element={} /> + {hasPermission( + webSocketContext.User.Permissions, + Constants.PERMISSIONS.GROUP_TASKS.HISTORY + ) && ( + } + /> + )} + {hasPermission( webSocketContext.User.Permissions, Constants.PERMISSIONS.SCANNER.USE_SCANNERS @@ -42,8 +53,7 @@ export default function AppRoutes() { webSocketContext.User.Permissions, Constants.PERMISSIONS.ADMIN_AREA.ROLES.ADD_ROLE, Constants.PERMISSIONS.ADMIN_AREA.ROLES.UPDATE_ROLE, - Constants.PERMISSIONS.ADMIN_AREA.ROLES.DELETE_ROLE, - Constants.PERMISSIONS.ADMIN_AREA.ROLES.ADD_USER_TO_ROLE + Constants.PERMISSIONS.ADMIN_AREA.ROLES.DELETE_ROLE ) && } />} {hasPermission( diff --git a/src/Components/SideMenu/index.js b/src/Components/SideMenu/index.js index 8929139..8d5e883 100644 --- a/src/Components/SideMenu/index.js +++ b/src/Components/SideMenu/index.js @@ -18,6 +18,7 @@ import { MyAvatar, WebSocketContext, getUserId, + hasOnePermission, hasPermission, } from "../../utils"; @@ -48,50 +49,84 @@ export default function SideMenu({ userSession, setUserSession }) { icon: , key: "/", }, - { - label: "Group Tasks", - type: "group", - children: [ - { - label: "Overview", - icon: , - key: "/group-tasks", - }, - { - label: "History", - icon: , - key: "/group-tasks-history", - }, - ], - }, - { - type: "divider", - }, ]; + let groupTasks = { + label: "Group Tasks", + type: "group", + children: [ + { + label: "Overview", + icon: , + key: "/group-tasks", + }, + ], + }; + if ( hasPermission( webSocketContext.User.Permissions, - Constants.PERMISSIONS.ADMIN_AREA.ROLES.ADD_ROLE + Constants.PERMISSIONS.GROUP_TASKS.HISTORY ) ) { - items.push({ + groupTasks.children.push({ + label: "History", + icon: , + key: "/group-tasks-history", + }); + } + + items.push(groupTasks); + + items.push({ + type: "divider", + }); + + if ( + hasOnePermission( + webSocketContext.User.Permissions, + Constants.PERMISSIONS.ADMIN_AREA.ROLES.ADD_ROLE, + Constants.PERMISSIONS.ADMIN_AREA.ROLES.UPDATE_ROLE, + Constants.PERMISSIONS.ADMIN_AREA.ROLES.DELETE_ROLE, + Constants.PERMISSIONS.ADMIN_AREA.LOGS + ) + ) { + let adminArea = { label: "Admin Area", icon: , key: "/admin-area", - children: [ - { - label: "Roles", - icon: , - key: "/admin-area/roles", - }, - { - label: "Logs", - icon: , - key: "/admin-area/logs", - }, - ], - }); + children: [], + }; + + if ( + hasOnePermission( + webSocketContext.User.Permissions, + Constants.PERMISSIONS.ADMIN_AREA.ROLES.ADD_ROLE, + Constants.PERMISSIONS.ADMIN_AREA.ROLES.UPDATE_ROLE, + Constants.PERMISSIONS.ADMIN_AREA.ROLES.DELETE_ROLE + ) + ) { + adminArea.children.push({ + label: "Roles", + icon: , + key: "/admin-area/roles", + }); + } + + if ( + hasPermission( + webSocketContext.User.Permissions, + Constants.PERMISSIONS.ADMIN_AREA.LOGS + ) + ) { + adminArea.children.push({ + label: "Logs", + icon: , + key: "/admin-area/logs", + }); + } + + items.push(adminArea); } return items; diff --git a/src/Pages/GroupTasks/History/index.js b/src/Pages/GroupTasks/History/index.js new file mode 100644 index 0000000..7d703cb --- /dev/null +++ b/src/Pages/GroupTasks/History/index.js @@ -0,0 +1,3 @@ +export default function GroupTasksHistory() { + return

GroupTasksHistory

; +} diff --git a/src/Pages/GroupTasks/GroupTasksTableList.js b/src/Pages/GroupTasks/Overview/GroupTasksTableList.js similarity index 99% rename from src/Pages/GroupTasks/GroupTasksTableList.js rename to src/Pages/GroupTasks/Overview/GroupTasksTableList.js index 82d3e2d..c297806 100644 --- a/src/Pages/GroupTasks/GroupTasksTableList.js +++ b/src/Pages/GroupTasks/Overview/GroupTasksTableList.js @@ -16,7 +16,7 @@ import { MyAvatar, SentMessagesCommands, WebSocketContext, -} from "../../utils"; +} from "../../../utils"; import { useContext } from "react"; const columns = [ diff --git a/src/Pages/GroupTasks/GroupTasksViewModal.js b/src/Pages/GroupTasks/Overview/GroupTasksViewModal.js similarity index 99% rename from src/Pages/GroupTasks/GroupTasksViewModal.js rename to src/Pages/GroupTasks/Overview/GroupTasksViewModal.js index 43ccd64..729c4b9 100644 --- a/src/Pages/GroupTasks/GroupTasksViewModal.js +++ b/src/Pages/GroupTasks/Overview/GroupTasksViewModal.js @@ -25,7 +25,7 @@ import { MyAvatar, getUserId, GroupTasksStepsLockedAndUserUpdateInputValueRememberId, -} from "../../utils"; +} from "../../../utils"; import { FileImageOutlined, InfoCircleOutlined, diff --git a/src/Pages/GroupTasks/GroupTypeSelectionModal.js b/src/Pages/GroupTasks/Overview/GroupTypeSelectionModal.js similarity index 99% rename from src/Pages/GroupTasks/GroupTypeSelectionModal.js rename to src/Pages/GroupTasks/Overview/GroupTypeSelectionModal.js index f356684..b6c91da 100644 --- a/src/Pages/GroupTasks/GroupTypeSelectionModal.js +++ b/src/Pages/GroupTasks/Overview/GroupTypeSelectionModal.js @@ -10,7 +10,7 @@ import { Tag, notification, } from "antd"; -import { WebSocketContext, SentMessagesCommands } from "../../utils"; +import { WebSocketContext, SentMessagesCommands } from "../../../utils"; import { useContext } from "react"; import { InfoCircleOutlined } from "@ant-design/icons"; import TextArea from "antd/es/input/TextArea"; diff --git a/src/Pages/GroupTasks/index.js b/src/Pages/GroupTasks/Overview/index.js similarity index 97% rename from src/Pages/GroupTasks/index.js rename to src/Pages/GroupTasks/Overview/index.js index 0ca989c..266d1bc 100644 --- a/src/Pages/GroupTasks/index.js +++ b/src/Pages/GroupTasks/Overview/index.js @@ -2,8 +2,8 @@ import { Result } from "antd"; import { useContext, useState } from "react"; import GroupTasksViewModal from "./GroupTasksViewModal"; import GroupTypeSelectionModal from "./GroupTypeSelectionModal"; -import { WebSocketContext } from "../../utils"; import GroupTaskTableList from "./GroupTasksTableList"; +import { WebSocketContext } from "../../../utils"; export default function GroupTasks({ isGroupTasksViewModalOpen }) { const [isGroupTypeSelectionModalOpen, setIsGroupTypeSelectionModalOpen] = diff --git a/src/utils.js b/src/utils.js index 392f3c7..67a6fc1 100644 --- a/src/utils.js +++ b/src/utils.js @@ -41,6 +41,9 @@ export const Constants = { MAX_AVATAR_SIZE: 5 * 1024 * 1024, ACCEPTED_FILE_TYPES: ["image/png", "image/jpeg", "image/jpg"], PERMISSIONS: { + GROUP_TASKS: { + HISTORY: "group_tasks.history", + }, ALL_USERS: { ACTION: { CHANGE_ROLE: "all_users.action.change_role", @@ -54,7 +57,6 @@ export const Constants = { ADD_ROLE: "admin_area.roles.add_role", UPDATE_ROLE: "admin_area.roles.update_role", DELETE_ROLE: "admin_area.roles.delete_role", - ADD_USER_TO_ROLE: "admin_area.roles.add_user_to_role", }, LOGS: "admin_area.logs", },