diff --git a/src/components/Certificates/Add/CreateForm.jsx b/src/components/Certificates/Add/CreateForm.jsx index f15c020..c7855e6 100644 --- a/src/components/Certificates/Add/CreateForm.jsx +++ b/src/components/Certificates/Add/CreateForm.jsx @@ -4,11 +4,13 @@ import { FormLabel, Radio, RadioGroup, - TextField, + TextField } from "@material-ui/core"; import React, { useRef, useState } from "react"; import { CertTypeData, CertTypes } from "../../../utils/certificates"; +import { Providers } from "../../../utils/roles"; +import { useUserContext } from "../../Contexts/UserContext"; import useStyles from "../../useStyles"; const getCertTypeLabel = (certtype) => { @@ -17,9 +19,20 @@ const getCertTypeLabel = (certtype) => { return "ID"; }; +const getCertsTypes = (providers) => { + if (providers.length === 0) return []; + if (providers[0] === Providers.MAGNA) { + return CertTypeData.filter((item) => { + return (item.label === CertTypes.TBOX || item.label === CertTypes.ICC); + }) + } + return CertTypeData; +} + const CreateForm = ({ onCreate, busy }) => { const classes = useStyles(); const commonnameEl = useRef(null); + const {providers} = useUserContext(); const [certType, setCertType] = useState(CertTypes.TBOX); const onSubmit = async (event) => { @@ -61,7 +74,7 @@ const CreateForm = ({ onCreate, busy }) => { onChange={onCertTypeChange} margin="normal" > - {CertTypeData.map((item, i) => { + {getCertsTypes(providers).map((item, i) => { return ( { const [menu, setMenu] = useState(menuData); useEffect(() => { - filterAccessible(groups, providers, setMenu); + filterMenu(groups, providers, setMenu); }, [groups, providers]); return ( @@ -91,14 +91,22 @@ const SideMenu = () => { ); }; -const filterAccessible = (groups, providers, setMenu) => { - const filteredMenu = menuData.reduce((result, item) => { +const reduceMenu = (data, groups, providers) => { + return data.reduce((result, item) => { if (hasRole(groups, item.rolesPerProvider, providers)) { + if (item.submenus) { + item.submenus = reduceMenu(item.submenus, groups, providers); + } result.push(item); } return result; }, []); +} + +const filterMenu = (groups, providers, setMenu) => { + const filteredMenu = reduceMenu(menuData, groups, providers); setMenu(filteredMenu); }; + export default SideMenu; diff --git a/src/components/Routes/SiteRoutes.jsx b/src/components/Routes/SiteRoutes.jsx index 46c8fa4..288655f 100644 --- a/src/components/Routes/SiteRoutes.jsx +++ b/src/components/Routes/SiteRoutes.jsx @@ -225,7 +225,7 @@ const SiteRoutes = () => { type={TYPES.PROTECTED} token={token} groups={groups} - rolesPerGroup={Permissions.FiskerCertificate} + rolesPerGroup={Permissions.FiskerMagnaCertificate} providers={providers} />