diff --git a/packages/frontend/editor-ui/src/components/ResourceLocator/ResourceLocator.vue b/packages/frontend/editor-ui/src/components/ResourceLocator/ResourceLocator.vue index 649272a12a..779897efd2 100644 --- a/packages/frontend/editor-ui/src/components/ResourceLocator/ResourceLocator.vue +++ b/packages/frontend/editor-ui/src/components/ResourceLocator/ResourceLocator.vue @@ -53,11 +53,17 @@ import { updateFromAIOverrideValues, type FromAIOverride, } from '../../utils/fromAIOverrideUtils'; +import { N8nNotice } from '@n8n/design-system'; interface IResourceLocatorQuery { results: INodeListSearchItems[]; nextPageToken: unknown; error: boolean; + errorDetails?: { + message?: string; + description?: string; + httpCode?: string; + }; loading: boolean; } @@ -148,13 +154,9 @@ const selectedMode = computed(() => { const isListMode = computed(() => selectedMode.value === 'list'); -const hasCredential = computed(() => { - const node = ndvStore.activeNode; - if (!node) { - return false; - } - return !!(node?.credentials && Object.keys(node.credentials).length === 1); -}); +const hasPermissionError = computed(() => + ['401', '403'].includes(currentResponse.value?.errorDetails?.httpCode ?? ''), +); const credentialsNotSet = computed(() => { if (!props.node) return false; @@ -643,6 +645,11 @@ async function loadResources() { setResponse(paramsKey, { loading: false, error: true, + errorDetails: { + message: e.message, + description: e.description, + httpCode: e.httpCode, + }, }); } } @@ -777,19 +784,37 @@ function removeOverride() { @load-more="loadResourcesDebounced" >