Fix sidebar items not showing up with partial permissions (#1949)

* Skip navigator's customerSearch query on dashboard load

* Fetch extensions list only with MANAGE_APPS permission

* Show sidebar sections with partial permissions

* Trigger deployment

* Change skipping query from always to when query is empty
This commit is contained in:
Michał Droń 2022-03-25 13:41:54 +01:00 committed by GitHub
parent cf7a51ab8e
commit e186b2f8c3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 6 deletions

View file

@ -1,3 +1,4 @@
import { useUserPermissions } from "@saleor/auth/hooks/useUserPermissions";
import { import {
AppExtensionMountEnum, AppExtensionMountEnum,
ExtensionListQuery, ExtensionListQuery,
@ -64,6 +65,10 @@ export const useExtensions = <T extends AppExtensionMountEnum>(
mountList: T[] mountList: T[]
): Record<T, Extension[]> => { ): Record<T, Extension[]> => {
const { openApp } = useExternalApp(); const { openApp } = useExternalApp();
const permissions = useUserPermissions();
const extensionsPermissions = permissions?.find(
perm => perm.code === PermissionEnum.MANAGE_APPS
);
const { data } = useExtensionListQuery({ const { data } = useExtensionListQuery({
fetchPolicy: "cache-first", fetchPolicy: "cache-first",
@ -71,7 +76,8 @@ export const useExtensions = <T extends AppExtensionMountEnum>(
filter: { filter: {
mount: mountList mount: mountList
} }
} },
skip: !extensionsPermissions
}); });
const extensions = filterAndMapToTarget( const extensions = filterAndMapToTarget(

View file

@ -248,7 +248,10 @@ function useMenuStructure(
const userPermissions = (user?.userPermissions || []).map( const userPermissions = (user?.userPermissions || []).map(
permission => permission.code permission => permission.code
); );
return (menuItem.permissions || []).every(permission => if (!menuItem?.permissions) {
return true;
}
return menuItem.permissions.some(permission =>
userPermissions.includes(permission) userPermissions.includes(permission)
); );
}; };
@ -259,12 +262,10 @@ function useMenuStructure(
return [ return [
menuItems.reduce( menuItems.reduce(
(resultItems: FilterableMenuItem[], menuItem: FilterableMenuItem) => { (resultItems: FilterableMenuItem[], menuItem: FilterableMenuItem) => {
const { children } = menuItem;
if (!isMenuItemPermitted(menuItem)) { if (!isMenuItemPermitted(menuItem)) {
return resultItems; return resultItems;
} }
const { children } = menuItem;
const filteredChildren = children const filteredChildren = children
? getFilteredMenuItems(children) ? getFilteredMenuItems(children)
: undefined; : undefined;

View file

@ -36,7 +36,8 @@ function useQuickSearch(
variables: { variables: {
...DEFAULT_INITIAL_SEARCH_DATA, ...DEFAULT_INITIAL_SEARCH_DATA,
first: 5 first: 5
} },
skip: !query
}); });
const [{ data: catalog }, searchCatalog] = useSearchCatalog(5); const [{ data: catalog }, searchCatalog] = useSearchCatalog(5);
const [createOrder] = useOrderDraftCreateMutation({ const [createOrder] = useOrderDraftCreateMutation({