diff --git a/src/apps/useExtensions.ts b/src/apps/useExtensions.ts index 9b1463e3e..4113c8797 100644 --- a/src/apps/useExtensions.ts +++ b/src/apps/useExtensions.ts @@ -1,3 +1,4 @@ +import { useUserPermissions } from "@saleor/auth/hooks/useUserPermissions"; import { AppExtensionMountEnum, ExtensionListQuery, @@ -64,6 +65,10 @@ export const useExtensions = ( mountList: T[] ): Record => { const { openApp } = useExternalApp(); + const permissions = useUserPermissions(); + const extensionsPermissions = permissions?.find( + perm => perm.code === PermissionEnum.MANAGE_APPS + ); const { data } = useExtensionListQuery({ fetchPolicy: "cache-first", @@ -71,7 +76,8 @@ export const useExtensions = ( filter: { mount: mountList } - } + }, + skip: !extensionsPermissions }); const extensions = filterAndMapToTarget( diff --git a/src/components/AppLayout/menuStructure.ts b/src/components/AppLayout/menuStructure.ts index 067e5d485..9d438f93c 100644 --- a/src/components/AppLayout/menuStructure.ts +++ b/src/components/AppLayout/menuStructure.ts @@ -248,7 +248,10 @@ function useMenuStructure( const userPermissions = (user?.userPermissions || []).map( permission => permission.code ); - return (menuItem.permissions || []).every(permission => + if (!menuItem?.permissions) { + return true; + } + return menuItem.permissions.some(permission => userPermissions.includes(permission) ); }; @@ -259,12 +262,10 @@ function useMenuStructure( return [ menuItems.reduce( (resultItems: FilterableMenuItem[], menuItem: FilterableMenuItem) => { - const { children } = menuItem; - if (!isMenuItemPermitted(menuItem)) { return resultItems; } - + const { children } = menuItem; const filteredChildren = children ? getFilteredMenuItems(children) : undefined; diff --git a/src/components/Navigator/useQuickSearch.ts b/src/components/Navigator/useQuickSearch.ts index 626c728a1..dc087dc7f 100644 --- a/src/components/Navigator/useQuickSearch.ts +++ b/src/components/Navigator/useQuickSearch.ts @@ -36,7 +36,8 @@ function useQuickSearch( variables: { ...DEFAULT_INITIAL_SEARCH_DATA, first: 5 - } + }, + skip: !query }); const [{ data: catalog }, searchCatalog] = useSearchCatalog(5); const [createOrder] = useOrderDraftCreateMutation({