From 8a8e55e05c31f3c90e6986a7189bf02e0b2dc31b Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Mon, 22 Jul 2024 17:21:38 +0200 Subject: [PATCH] Create Permissions page --- .../pages/Permissions/Permissions.jsx | 64 +++++++++++++++++++ .../LicenseDialog/pages/Permissions/index.js | 1 + 2 files changed, 65 insertions(+) create mode 100644 dashboard/src/states/Dashboard/pages/Licenses/components/LicenseDialog/pages/Permissions/Permissions.jsx create mode 100644 dashboard/src/states/Dashboard/pages/Licenses/components/LicenseDialog/pages/Permissions/index.js diff --git a/dashboard/src/states/Dashboard/pages/Licenses/components/LicenseDialog/pages/Permissions/Permissions.jsx b/dashboard/src/states/Dashboard/pages/Licenses/components/LicenseDialog/pages/Permissions/Permissions.jsx new file mode 100644 index 0000000..67b61a9 --- /dev/null +++ b/dashboard/src/states/Dashboard/pages/Licenses/components/LicenseDialog/pages/Permissions/Permissions.jsx @@ -0,0 +1,64 @@ +import { + CircularProgress, + Stack, + Switch, + Typography +} from "@mui/material"; +import {getRequest} from "@/common/utils/RequestUtil.js"; +import {useContext, useEffect, useState} from "react"; +import {ProjectContext} from "@/states/Dashboard/contexts/Project"; +import {AdminPanelSettings} from "@mui/icons-material"; + +export const Permissions = ({setPermissions, permissions}) => { + const {currentProject} = useContext(ProjectContext); + + const [loading, setLoading] = useState(true); + + const [onlinePermissions, setOnlinePermissions] = useState([]); + + const updateLocal = (permission) => { + setPermissions(prev => { + if (prev.includes(permission)) { + return prev.filter(p => p !== permission); + } else { + return [...prev, permission]; + } + }); + } + + useEffect(() => { + const fetchPermissions = async () => { + try { + const data = await getRequest(`/permission/${currentProject.id}/list`); + + if (!data) return; + + setOnlinePermissions(data); + setLoading(false); + } catch (e) { + console.error(e); + } + } + + fetchPermissions(); + }, []); + + return ( + + {onlinePermissions.map(({permission}, index) => ( + + + + {permission} + + updateLocal(permission)}/> + + ))} + + {loading && + + } + + ) +} \ No newline at end of file diff --git a/dashboard/src/states/Dashboard/pages/Licenses/components/LicenseDialog/pages/Permissions/index.js b/dashboard/src/states/Dashboard/pages/Licenses/components/LicenseDialog/pages/Permissions/index.js new file mode 100644 index 0000000..47bc9c0 --- /dev/null +++ b/dashboard/src/states/Dashboard/pages/Licenses/components/LicenseDialog/pages/Permissions/index.js @@ -0,0 +1 @@ +export {Permissions as default} from "./Permissions.jsx"; \ No newline at end of file