From 044cc1deaa23b4b99d7d23a5fe9d82387da292a7 Mon Sep 17 00:00:00 2001 From: Stanislas Polu Date: Thu, 2 Jan 2025 16:32:28 +0100 Subject: [PATCH] front connectors permissions error handling --- connectors/src/api/get_connector_permissions.ts | 2 +- front/lib/api/data_source_view.ts | 7 ++++++- .../data_sources/[dsId]/managed/permissions/index.ts | 12 ++++++++++++ types/src/connectors/api.ts | 1 + 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/connectors/src/api/get_connector_permissions.ts b/connectors/src/api/get_connector_permissions.ts index 0ac46065dd5c..3f5d5e13e606 100644 --- a/connectors/src/api/get_connector_permissions.ts +++ b/connectors/src/api/get_connector_permissions.ts @@ -108,7 +108,7 @@ const _getConnectorPermissions = async ( return apiError(req, res, { status_code: 401, api_error: { - type: "connector_oauth_error", + type: "connector_authorization_error", message: pRes.error.message, }, }); diff --git a/front/lib/api/data_source_view.ts b/front/lib/api/data_source_view.ts index 7f42d3802ce4..7632170f5135 100644 --- a/front/lib/api/data_source_view.ts +++ b/front/lib/api/data_source_view.ts @@ -109,7 +109,12 @@ async function getContentNodesForManagedDataSourceView( }); if (connectorsRes.isErr()) { - if (connectorsRes.error.type === "connector_rate_limit_error") { + if ( + [ + "connector_rate_limit_error", + "connector_authorization_error", + ].includes(connectorsRes.error.type) + ) { return new Err(new Error(connectorsRes.error.message)); } return new Err( diff --git a/front/pages/api/w/[wId]/data_sources/[dsId]/managed/permissions/index.ts b/front/pages/api/w/[wId]/data_sources/[dsId]/managed/permissions/index.ts index 9ef30d54ff8d..80904fcaa685 100644 --- a/front/pages/api/w/[wId]/data_sources/[dsId]/managed/permissions/index.ts +++ b/front/pages/api/w/[wId]/data_sources/[dsId]/managed/permissions/index.ts @@ -282,6 +282,18 @@ export async function getManagedDataSourcePermissionsHandler( }, }); } + if (permissionsRes.error.type === "connector_authorization_error") { + return apiError(req, res, { + status_code: 401, + api_error: { + type: "data_source_auth_error", + message: + "Authorization error while retrieving the data source permissions.", + }, + }); + } + // Other error codes are invalid requests from front to connectors or 500s which should be + // treated as 500. return apiError(req, res, { status_code: 500, api_error: { diff --git a/types/src/connectors/api.ts b/types/src/connectors/api.ts index 738539e08a20..a3abd7ab4656 100644 --- a/types/src/connectors/api.ts +++ b/types/src/connectors/api.ts @@ -13,6 +13,7 @@ export type ConnectorsAPIErrorType = | "connector_update_unauthorized" | "connector_oauth_target_mismatch" | "connector_oauth_error" + | "connector_authorization_error" | "slack_channel_not_found" | "connector_rate_limit_error" | "slack_configuration_not_found"