scaffolder: add actions condition exports

Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
This commit is contained in:
Vincenzo Scamporlino
2023-04-04 12:41:21 +02:00
parent 8d271343e7
commit 7a3db15295
@@ -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;