permission handling

main
alex 2023-06-24 09:52:34 +02:00
parent 3e74b28f73
commit bd8ef90148
8 changed files with 92 additions and 42 deletions

View File

@ -1,6 +1,5 @@
import { Route, Routes } from "react-router-dom"; import { Route, Routes } from "react-router-dom";
import Dashboard from "../../Pages/Dashboard"; import Dashboard from "../../Pages/Dashboard";
import GroupTasks from "../../Pages/GroupTasks";
import { import {
Constants, Constants,
WebSocketContext, WebSocketContext,
@ -13,6 +12,8 @@ import AdminAreaRoles from "../../Pages/AdminArea/Roles";
import AdminAreaLogs from "../../Pages/AdminArea/Logs"; import AdminAreaLogs from "../../Pages/AdminArea/Logs";
import AllUsers from "../../Pages/AllUsers"; import AllUsers from "../../Pages/AllUsers";
import { useContext } from "react"; import { useContext } from "react";
import GroupTasks from "../../Pages/GroupTasks/Overview";
import GroupTasksHistory from "../../Pages/GroupTasks/History";
export default function AppRoutes() { export default function AppRoutes() {
const webSocketContext = useContext(WebSocketContext); const webSocketContext = useContext(WebSocketContext);
@ -29,6 +30,16 @@ export default function AppRoutes() {
element={<GroupTasks isGroupTasksViewModalOpen={true} />} element={<GroupTasks isGroupTasksViewModalOpen={true} />}
/> />
{hasPermission(
webSocketContext.User.Permissions,
Constants.PERMISSIONS.GROUP_TASKS.HISTORY
) && (
<Route
path={Constants.ROUTE_PATHS.GROUP_TASKS + "-history"}
element={<GroupTasksHistory />}
/>
)}
{hasPermission( {hasPermission(
webSocketContext.User.Permissions, webSocketContext.User.Permissions,
Constants.PERMISSIONS.SCANNER.USE_SCANNERS Constants.PERMISSIONS.SCANNER.USE_SCANNERS
@ -42,8 +53,7 @@ export default function AppRoutes() {
webSocketContext.User.Permissions, webSocketContext.User.Permissions,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.ADD_ROLE, Constants.PERMISSIONS.ADMIN_AREA.ROLES.ADD_ROLE,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.UPDATE_ROLE, Constants.PERMISSIONS.ADMIN_AREA.ROLES.UPDATE_ROLE,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.DELETE_ROLE, Constants.PERMISSIONS.ADMIN_AREA.ROLES.DELETE_ROLE
Constants.PERMISSIONS.ADMIN_AREA.ROLES.ADD_USER_TO_ROLE
) && <Route path="/admin-area/roles" element={<AdminAreaRoles />} />} ) && <Route path="/admin-area/roles" element={<AdminAreaRoles />} />}
{hasPermission( {hasPermission(

View File

@ -18,6 +18,7 @@ import {
MyAvatar, MyAvatar,
WebSocketContext, WebSocketContext,
getUserId, getUserId,
hasOnePermission,
hasPermission, hasPermission,
} from "../../utils"; } from "../../utils";
@ -48,50 +49,84 @@ export default function SideMenu({ userSession, setUserSession }) {
icon: <AppstoreOutlined />, icon: <AppstoreOutlined />,
key: "/", key: "/",
}, },
{
label: "Group Tasks",
type: "group",
children: [
{
label: "Overview",
icon: <SnippetsOutlined />,
key: "/group-tasks",
},
{
label: "History",
icon: <HistoryOutlined />,
key: "/group-tasks-history",
},
],
},
{
type: "divider",
},
]; ];
let groupTasks = {
label: "Group Tasks",
type: "group",
children: [
{
label: "Overview",
icon: <SnippetsOutlined />,
key: "/group-tasks",
},
],
};
if ( if (
hasPermission( hasPermission(
webSocketContext.User.Permissions, webSocketContext.User.Permissions,
Constants.PERMISSIONS.ADMIN_AREA.ROLES.ADD_ROLE Constants.PERMISSIONS.GROUP_TASKS.HISTORY
) )
) { ) {
items.push({ groupTasks.children.push({
label: "History",
icon: <HistoryOutlined />,
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", label: "Admin Area",
icon: <SettingOutlined />, icon: <SettingOutlined />,
key: "/admin-area", key: "/admin-area",
children: [ children: [],
{ };
label: "Roles",
icon: <UsergroupAddOutlined />, if (
key: "/admin-area/roles", hasOnePermission(
}, webSocketContext.User.Permissions,
{ Constants.PERMISSIONS.ADMIN_AREA.ROLES.ADD_ROLE,
label: "Logs", Constants.PERMISSIONS.ADMIN_AREA.ROLES.UPDATE_ROLE,
icon: <FileTextOutlined />, Constants.PERMISSIONS.ADMIN_AREA.ROLES.DELETE_ROLE
key: "/admin-area/logs", )
}, ) {
], adminArea.children.push({
}); label: "Roles",
icon: <UsergroupAddOutlined />,
key: "/admin-area/roles",
});
}
if (
hasPermission(
webSocketContext.User.Permissions,
Constants.PERMISSIONS.ADMIN_AREA.LOGS
)
) {
adminArea.children.push({
label: "Logs",
icon: <FileTextOutlined />,
key: "/admin-area/logs",
});
}
items.push(adminArea);
} }
return items; return items;

View File

@ -0,0 +1,3 @@
export default function GroupTasksHistory() {
return <p>GroupTasksHistory</p>;
}

View File

@ -16,7 +16,7 @@ import {
MyAvatar, MyAvatar,
SentMessagesCommands, SentMessagesCommands,
WebSocketContext, WebSocketContext,
} from "../../utils"; } from "../../../utils";
import { useContext } from "react"; import { useContext } from "react";
const columns = [ const columns = [

View File

@ -25,7 +25,7 @@ import {
MyAvatar, MyAvatar,
getUserId, getUserId,
GroupTasksStepsLockedAndUserUpdateInputValueRememberId, GroupTasksStepsLockedAndUserUpdateInputValueRememberId,
} from "../../utils"; } from "../../../utils";
import { import {
FileImageOutlined, FileImageOutlined,
InfoCircleOutlined, InfoCircleOutlined,

View File

@ -10,7 +10,7 @@ import {
Tag, Tag,
notification, notification,
} from "antd"; } from "antd";
import { WebSocketContext, SentMessagesCommands } from "../../utils"; import { WebSocketContext, SentMessagesCommands } from "../../../utils";
import { useContext } from "react"; import { useContext } from "react";
import { InfoCircleOutlined } from "@ant-design/icons"; import { InfoCircleOutlined } from "@ant-design/icons";
import TextArea from "antd/es/input/TextArea"; import TextArea from "antd/es/input/TextArea";

View File

@ -2,8 +2,8 @@ import { Result } from "antd";
import { useContext, useState } from "react"; import { useContext, useState } from "react";
import GroupTasksViewModal from "./GroupTasksViewModal"; import GroupTasksViewModal from "./GroupTasksViewModal";
import GroupTypeSelectionModal from "./GroupTypeSelectionModal"; import GroupTypeSelectionModal from "./GroupTypeSelectionModal";
import { WebSocketContext } from "../../utils";
import GroupTaskTableList from "./GroupTasksTableList"; import GroupTaskTableList from "./GroupTasksTableList";
import { WebSocketContext } from "../../../utils";
export default function GroupTasks({ isGroupTasksViewModalOpen }) { export default function GroupTasks({ isGroupTasksViewModalOpen }) {
const [isGroupTypeSelectionModalOpen, setIsGroupTypeSelectionModalOpen] = const [isGroupTypeSelectionModalOpen, setIsGroupTypeSelectionModalOpen] =

View File

@ -41,6 +41,9 @@ export const Constants = {
MAX_AVATAR_SIZE: 5 * 1024 * 1024, MAX_AVATAR_SIZE: 5 * 1024 * 1024,
ACCEPTED_FILE_TYPES: ["image/png", "image/jpeg", "image/jpg"], ACCEPTED_FILE_TYPES: ["image/png", "image/jpeg", "image/jpg"],
PERMISSIONS: { PERMISSIONS: {
GROUP_TASKS: {
HISTORY: "group_tasks.history",
},
ALL_USERS: { ALL_USERS: {
ACTION: { ACTION: {
CHANGE_ROLE: "all_users.action.change_role", CHANGE_ROLE: "all_users.action.change_role",
@ -54,7 +57,6 @@ export const Constants = {
ADD_ROLE: "admin_area.roles.add_role", ADD_ROLE: "admin_area.roles.add_role",
UPDATE_ROLE: "admin_area.roles.update_role", UPDATE_ROLE: "admin_area.roles.update_role",
DELETE_ROLE: "admin_area.roles.delete_role", DELETE_ROLE: "admin_area.roles.delete_role",
ADD_USER_TO_ROLE: "admin_area.roles.add_user_to_role",
}, },
LOGS: "admin_area.logs", LOGS: "admin_area.logs",
}, },