diff --git a/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts b/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts index d28d16f4cf..03db2147a7 100644 --- a/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/dryrun/createDryRunner.ts @@ -54,10 +54,10 @@ export type TemplateTesterCreateOptions = { logger: Logger; integrations: ScmIntegrations; actionRegistry: TemplateActionRegistry; - permissionApi: PermissionEvaluator; workingDirectory: string; additionalTemplateFilters?: Record; additionalTemplateGlobals?: Record; + permissionApi?: PermissionEvaluator; }; /** diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts index 203c3cd32d..7be7b95c78 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts @@ -48,7 +48,10 @@ import { createConditionAuthorizer } from '@backstage/plugin-permission-node'; import { UserEntity } from '@backstage/catalog-model'; import { createCounterMetric, createHistogramMetric } from '../../util/metrics'; import { createDefaultFilters } from '../../lib/templating/filters'; -import { PermissionEvaluator } from '@backstage/plugin-permission-common'; +import { + AuthorizeResult, + PermissionEvaluator, +} from '@backstage/plugin-permission-common'; import { scaffolderActionRules } from '../../service/rules'; import { actionExecutePermission } from '@backstage/plugin-scaffolder-common/alpha'; @@ -59,7 +62,7 @@ type NunjucksWorkflowRunnerOptions = { logger: winston.Logger; additionalTemplateFilters?: Record; additionalTemplateGlobals?: Record; - permissionApi: PermissionEvaluator; + permissionApi?: PermissionEvaluator; }; type TemplateContext = { @@ -292,10 +295,11 @@ export class NunjucksWorkflowRunner implements WorkflowRunner { } } - const [decision] = await this.options.permissionApi.authorizeConditional( - [{ permission: actionExecutePermission }], - { token: task.secrets?.backstageToken }, - ); + const [decision] = + (await this.options.permissionApi?.authorizeConditional( + [{ permission: actionExecutePermission }], + { token: task.secrets?.backstageToken }, + )) || [{ result: AuthorizeResult.ALLOW }]; if (!isActionAuthorized(decision, { action: action.id, input })) { throw new InputError( diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts index 5c7a35303c..960c89511a 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts @@ -30,11 +30,11 @@ import { PermissionEvaluator } from '@backstage/plugin-permission-common'; */ export type TaskWorkerOptions = { taskBroker: TaskBroker; - permissionApi: PermissionEvaluator; runners: { workflowRunner: WorkflowRunner; }; concurrentTasksLimit: number; + permissionApi?: PermissionEvaluator; }; /** @@ -44,7 +44,6 @@ export type TaskWorkerOptions = { */ export type CreateWorkerOptions = { taskBroker: TaskBroker; - permissionApi: PermissionEvaluator; actionRegistry: TemplateActionRegistry; integrations: ScmIntegrations; workingDirectory: string; @@ -64,6 +63,7 @@ export type CreateWorkerOptions = { */ concurrentTasksLimit?: number; additionalTemplateGlobals?: Record; + permissionApi?: PermissionEvaluator; }; /**