diff --git a/src/components/AppLayout/AppLayout.tsx b/src/components/AppLayout/AppLayout.tsx index b8c7f7193..0d5c87aed 100644 --- a/src/components/AppLayout/AppLayout.tsx +++ b/src/components/AppLayout/AppLayout.tsx @@ -24,12 +24,14 @@ import saleorDarkLogoSmall from "@assets/images/logo-dark-small.svg"; import saleorDarkLogo from "@assets/images/logo-dark.svg"; import menuArrowIcon from "@assets/images/menu-arrow-icon.svg"; import AppProgressProvider from "@saleor/components/AppProgress"; +import { createConfigurationMenu } from "@saleor/configuration"; import useLocalStorage from "@saleor/hooks/useLocalStorage"; import useNavigator from "@saleor/hooks/useNavigator"; import useTheme from "@saleor/hooks/useTheme"; import useUser from "@saleor/hooks/useUser"; import ArrowDropdown from "@saleor/icons/ArrowDropdown"; import { staffMemberDetailsUrl } from "@saleor/staff/urls"; +import { maybe } from "@saleor/misc"; import Container from "../Container"; import AppActionContext from "./AppActionContext"; import AppHeaderContext from "./AppHeaderContext"; @@ -297,6 +299,17 @@ const AppLayout = withStyles(styles, { const intl = useIntl(); const menuStructure = createMenuStructure(intl); + const configurationMenu = createConfigurationMenu(intl); + const userPermissions = maybe(() => user.permissions, []); + + const renderConfigure = configurationMenu.some(section => + section.menuItems.some( + menuItem => + !!userPermissions.find( + userPermission => userPermission.code === menuItem.permission + ) + ) + ); const handleLogout = () => { setMenuState(false); @@ -365,7 +378,7 @@ const AppLayout = withStyles(styles, { isMenuSmall={!isMenuSmall} location={location.pathname} user={user} - renderConfigure={true} + renderConfigure={renderConfigure} onMenuItemClick={handleMenuItemClick} /> diff --git a/src/configuration/index.tsx b/src/configuration/index.tsx index 1ca93d41a..2eb77c4ba 100644 --- a/src/configuration/index.tsx +++ b/src/configuration/index.tsx @@ -81,7 +81,7 @@ export function createConfigurationMenu(intl: IntlShape): MenuSection[] { id: "configurationMenuTaxes" }), icon: , - permission: PermissionEnum.MANAGE_PRODUCTS, + permission: PermissionEnum.MANAGE_SETTINGS, title: intl.formatMessage(sectionNames.taxes), url: taxSection } @@ -151,7 +151,7 @@ export function createConfigurationMenu(intl: IntlShape): MenuSection[] { preserveAspectRatio="xMinYMin meet" /> ), - permission: PermissionEnum.MANAGE_SETTINGS, + permission: PermissionEnum.MANAGE_PLUGINS, title: intl.formatMessage(sectionNames.plugins), url: pluginsListUrl() },