scaffolder: add actions condition exports
Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user