From aefa43dcafe929d8939dd2ee5ba94633759204a7 Mon Sep 17 00:00:00 2001 From: Guillaume Bouvignies Date: Thu, 9 Nov 2023 11:58:45 +0100 Subject: [PATCH] fix: Fix error handler token injection (#2598) * fix: Fix error handler token injection * Add frontend --- backend/windmill-api/src/schedule.rs | 10 ---------- backend/windmill-api/src/workspaces.rs | 8 -------- backend/windmill-queue/src/jobs.rs | 14 ++++++++------ .../lib/components/ErrorOrRecoveryHandler.svelte | 5 +++-- .../src/lib/components/ScheduleEditorInner.svelte | 12 ++++++++++-- .../(logged)/workspace_settings/+page.svelte | 4 +++- 6 files changed, 24 insertions(+), 29 deletions(-) diff --git a/backend/windmill-api/src/schedule.rs b/backend/windmill-api/src/schedule.rs index 2f1b0a6f5e..7279154eb9 100644 --- a/backend/windmill-api/src/schedule.rs +++ b/backend/windmill-api/src/schedule.rs @@ -119,16 +119,6 @@ async fn create_schedule( )); } - #[cfg(not(feature = "enterprise"))] - if ns.on_failure.is_some() - && ns.on_failure.as_ref().unwrap() - == "script/hub/6512/workspace-or-schedule-error-handler-slack" - { - return Err(Error::BadRequest( - "Slack error handler is only available in enterprise version".to_string(), - )); - } - #[cfg(not(feature = "enterprise"))] if ns.on_failure_times.is_some() && ns.on_failure_times.unwrap() > 1 { return Err(Error::BadRequest( diff --git a/backend/windmill-api/src/workspaces.rs b/backend/windmill-api/src/workspaces.rs index eb3be29850..17a6d546f9 100644 --- a/backend/windmill-api/src/workspaces.rs +++ b/backend/windmill-api/src/workspaces.rs @@ -812,14 +812,6 @@ async fn edit_error_handler( ) -> Result { require_admin(is_admin, &username)?; - #[cfg(not(feature = "enterprise"))] - if ee.error_handler.as_ref().is_some_and(|val| val == "script/hub/2431/slack/schedule-error-handler-slack") - { - return Err(Error::BadRequest( - "Slack error handler is only available in enterprise version".to_string(), - )); - } - let mut tx = db.begin().await?; sqlx::query_as!( diff --git a/backend/windmill-queue/src/jobs.rs b/backend/windmill-queue/src/jobs.rs index 03e86ca500..585b482ad3 100644 --- a/backend/windmill-queue/src/jobs.rs +++ b/backend/windmill-queue/src/jobs.rs @@ -596,9 +596,10 @@ pub async fn run_error_handler< } // TODO: this should be injected when the EH is defined in the BE. - if error_handler_path - .to_string() - .eq("hub/6512/workspace-or-schedule-error-handler-slack") + if error_handler_path.to_string().starts_with("hub/") + && error_handler_path + .to_string() + .ends_with("/workspace-or-schedule-error-handler-slack") { // default slack error handler being used -> we need to inject the slack token let slack_resource = format!("$res:{WORKSPACE_SLACK_BOT_TOKEN_PATH}"); @@ -1036,9 +1037,10 @@ pub async fn handle_on_failure< } // TODO: This should be inject when the EH is defined in the FE. - if on_failure_path - .to_string() - .eq("script/hub/6512/workspace-or-schedule-error-handler-slack") + if on_failure_path.to_string().starts_with("script/hub/") + && on_failure_path + .to_string() + .ends_with("/workspace-or-schedule-error-handler-slack") { // default slack error handler being used -> we need to inject the slack token let slack_resource = format!("$res:{WORKSPACE_SLACK_BOT_TOKEN_PATH}"); diff --git a/frontend/src/lib/components/ErrorOrRecoveryHandler.svelte b/frontend/src/lib/components/ErrorOrRecoveryHandler.svelte index 4d9108bad0..ed4c09c27f 100644 --- a/frontend/src/lib/components/ErrorOrRecoveryHandler.svelte +++ b/frontend/src/lib/components/ErrorOrRecoveryHandler.svelte @@ -218,7 +218,8 @@ { handlerPath = e.detail ? slackHandlerScriptPath : undefined @@ -238,7 +239,7 @@ class="text-xs" /> {/if} - {#if handlerPath === slackHandlerScriptPath && enterpriseLicense} + {#if enterpriseLicense && handlerPath?.startsWith('hub/') && handlerPath?.endsWith('/workspace-or-schedule-error-handler-slack')} {#if !workspaceConnectedToSlack}
diff --git a/frontend/src/lib/components/ScheduleEditorInner.svelte b/frontend/src/lib/components/ScheduleEditorInner.svelte index 43b275fb70..10c50989b5 100644 --- a/frontend/src/lib/components/ScheduleEditorInner.svelte +++ b/frontend/src/lib/components/ScheduleEditorInner.svelte @@ -92,7 +92,10 @@ errorHandlerPath = splitted.slice(1)?.join('/') errorHandlerExtraArgs = defaultErrorHandlerMaybe['errorHandlerExtraArgs'] errorHandlerCustomInitialPath = errorHandlerPath - if (errorHandlerPath === slackErrorHandler) { + if ( + errorHandlerPath.startsWith('hub/') && + errorHandlerPath.endsWith('/workspace-or-schedule-error-handler-slack') + ) { errorHandlerSelected = 'slack' } else { errorHandlerSelected = 'custom' @@ -229,7 +232,12 @@ failedTimes = s.on_failure_times ?? 1 failedExact = s.on_failure_exact ?? false errorHandlerExtraArgs = s.on_failure_extra_args ?? {} - if (errorHandlerPath !== slackErrorHandler) { + if ( + errorHandlerPath.startsWith('hub/') && + errorHandlerPath.endsWith('/workspace-or-schedule-error-handler-slack') + ) { + errorHandlerSelected = 'slack' + } else { errorHandlerSelected = 'custom' } } else { diff --git a/frontend/src/routes/(root)/(logged)/workspace_settings/+page.svelte b/frontend/src/routes/(root)/(logged)/workspace_settings/+page.svelte index 2bcbbd251a..909d3104cf 100644 --- a/frontend/src/routes/(root)/(logged)/workspace_settings/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/workspace_settings/+page.svelte @@ -172,7 +172,9 @@ errorHandlerSelected = 'custom' } else { errorHandlerSelected = - emptyString(errorHandlerScriptPath) || errorHandlerScriptPath === slackErrorHandler + emptyString(errorHandlerScriptPath) || + (errorHandlerScriptPath.startsWith('hub/') && + errorHandlerScriptPath.endsWith('/workspace-or-schedule-error-handler-slack')) ? 'slack' : 'custom' }