diff --git a/src/components/Navigation/MainMenu.tsx b/src/components/Navigation/MainMenu.tsx index 9a519b1..f0d36b2 100644 --- a/src/components/Navigation/MainMenu.tsx +++ b/src/components/Navigation/MainMenu.tsx @@ -1,13 +1,36 @@ import { FC, useCallback, useState } from "react" import { useSelector } from "react-redux" import classnames from "classnames" -import { isUserConnected, routerSelector } from "../../store/auth" +import { isUserConnected, routerSelector, selectUserRoles } from "../../store/auth" import styles from "./styles.module.scss" +import ROLES from "../../utils/roles.constants" -const MainMenu: FC = (): JSX.Element | null => { - const connected = useSelector(isUserConnected) +interface MenuItemProps { + name: string + pathname: string +} + +const MenuItem: FC = ({ name, pathname }): JSX.Element => { const router = useSelector(routerSelector) + const isActive = (router as any)?.location?.pathname === pathname + return ( +
  • + {name} +
  • + ) +} +interface RestrictMenuItemProps extends MenuItemProps { + role: string +} + +const RestrictMenuItem: FC = ({ name, pathname, role }): JSX.Element => { + const roles = useSelector(selectUserRoles) + return roles.includes(role) ? :
    +} + +const MainMenu: FC = (): JSX.Element => { + const connected = useSelector(isUserConnected) const [opened, setOpened] = useState(false) const onOpen = useCallback(() => { @@ -18,16 +41,7 @@ const MainMenu: FC = (): JSX.Element | null => { setOpened(false) }, [setOpened]) - if (!connected) return null - - function createMenuItem(name: string, pathname: string): JSX.Element { - const isActive = (router as any)?.location?.pathname === pathname - return ( -
  • - {name} -
  • - ) - } + if (!connected) return
    return (