From 7a3db152953dae968f88386c12e869877bc379dd Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino Date: Tue, 4 Apr 2023 12:41:21 +0200 Subject: [PATCH] scaffolder: add actions condition exports Signed-off-by: Vincenzo Scamporlino --- .../src/service/conditionExports.ts | 111 +++++++++--------- 1 file changed, 57 insertions(+), 54 deletions(-) diff --git a/plugins/scaffolder-backend/src/service/conditionExports.ts b/plugins/scaffolder-backend/src/service/conditionExports.ts index 8175ec9a00..7d22c9d262 100644 --- a/plugins/scaffolder-backend/src/service/conditionExports.ts +++ b/plugins/scaffolder-backend/src/service/conditionExports.ts @@ -21,69 +21,72 @@ import { import { createConditionExports } from '@backstage/plugin-permission-node'; import { scaffolderTemplateRules, scaffolderActionRules } from './rules'; -const { - conditions: scaffolderTemplateConditions, - createConditionalDecision: createScaffolderTemplateConditionalDecision, -} = createConditionExports({ +const templateConditionExports = createConditionExports({ pluginId: 'scaffolder', resourceType: RESOURCE_TYPE_SCAFFOLDER_TEMPLATE, rules: scaffolderTemplateRules, }); -const { - conditions: scaffolderActionConditions, - createConditionalDecision: createScaffolderActionConditionalDecision, -} = createConditionExports({ +const actionsConditionExports = createConditionExports({ pluginId: 'scaffolder', resourceType: RESOURCE_TYPE_SCAFFOLDER_ACTION, rules: scaffolderActionRules, }); -export { - createScaffolderActionConditionalDecision, - scaffolderActionConditions, -}; +/** + * `createScaffolderTemplateConditionalDecision` can be used when authoring policies to + * create conditional decisions. It requires a permission of type + * `ResourcePermission<'scaffolder-template'>` to be passed as the first parameter. + * It's recommended that you use the provided `isResourcePermission` and + * `isPermission` helper methods to narrow the type of the permission passed to + * the handle method as shown below. + * + * ``` + * // MyAuthorizationPolicy.ts + * ... + * import { createScaffolderPolicyDecision } from '@backstage/plugin-scaffolder-backend'; + * import { RESOURCE_TYPE_SCAFFOLDER_TEMPLATE } from '@backstage/plugin-scaffolder-common'; + * + * class MyAuthorizationPolicy implements PermissionPolicy { + * async handle(request, user) { + * ... + * + * if (isResourcePermission(request.permission, RESOURCE_TYPE_SCAFFOLDER_TEMPLATE)) { + * return createScaffolderConditionalDecision( + * request.permission, + * { anyOf: [...insert conditions here...] } + * ); + * } + * + * ... + * } + * + * ``` + * + * @alpha + */ +export const createScaffolderTemplateConditionalDecision = + templateConditionExports.createConditionalDecision; -export { - /** - * `createScaffolderTemplateConditionalDecision` can be used when authoring policies to - * create conditional decisions. It requires a permission of type - * `ResourcePermission<'scaffolder-template'>` to be passed as the first parameter. - * It's recommended that you use the provided `isResourcePermission` and - * `isPermission` helper methods to narrow the type of the permission passed to - * the handle method as shown below. - * - * ``` - * // MyAuthorizationPolicy.ts - * ... - * import { createScaffolderPolicyDecision } from '@backstage/plugin-scaffolder-backend'; - * import { RESOURCE_TYPE_SCAFFOLDER_TEMPLATE } from '@backstage/plugin-scaffolder-common'; - * - * class MyAuthorizationPolicy implements PermissionPolicy { - * async handle(request, user) { - * ... - * - * if (isResourcePermission(request.permission, RESOURCE_TYPE_SCAFFOLDER_TEMPLATE)) { - * return createScaffolderConditionalDecision( - * request.permission, - * { anyOf: [...insert conditions here...] } - * ); - * } - * - * ... - * } - * - * ``` - * - * @alpha - */ - createScaffolderTemplateConditionalDecision, +/** + * These conditions are used when creating conditional decisions for scaffolder + * templates that are returned by authorization policies. + * + * @alpha + */ +export const scaffolderTemplateConditions = templateConditionExports.conditions; - /** - * These conditions are used when creating conditional decisions for scaffolder - * templates that are returned by authorization policies. - * - * @alpha - */ - scaffolderTemplateConditions, -}; +/** + * @alpha + */ +export const createScaffolderActionConditionalDecision = + actionsConditionExports.createConditionalDecision; + +/** + * + * These conditions are used when creating conditional decisions for scaffolder + * actions that are returned by authorization policies. + * + * @alpha + */ +export const scaffolderActionConditions = actionsConditionExports.conditions;