From dbf36da3eb96c686a6aab23391e4cf516bcae0ae Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino Date: Tue, 14 Feb 2023 17:22:17 +0100 Subject: [PATCH] permission-node: improve api report for createPermissionIntegrationRouter Co-authored-by: Harry Hogg Signed-off-by: Vincenzo Scamporlino --- plugins/permission-node/api-report.md | 12 ++-- .../createPermissionIntegrationRouter.ts | 58 +++++++++++-------- 2 files changed, 40 insertions(+), 30 deletions(-) diff --git a/plugins/permission-node/api-report.md b/plugins/permission-node/api-report.md index 3019812749..b8d337819c 100644 --- a/plugins/permission-node/api-report.md +++ b/plugins/permission-node/api-report.md @@ -111,6 +111,11 @@ export const createConditionTransformer: < permissionRules: [...TRules], ) => ConditionTransformer; +// @public +export const createIsAuthorized: ( + rules: PermissionRule[], +) => (decision: PolicyDecision, resource: TResource | undefined) => boolean; + // @public export const createPermissionIntegrationRouter: < TResourceType extends string, @@ -124,7 +129,7 @@ export const createPermissionIntegrationRouter: < NoInfer, PermissionRuleParams >[]; - getResources?: GetResourcesFn | undefined; + getResources: (resourceRefs: string[]) => Promise<(TResource | undefined)[]>; }) => express.Router; // @public @@ -137,11 +142,6 @@ export const createPermissionRule: < rule: PermissionRule, ) => PermissionRule; -// @public -export type GetResourcesFn = ( - resourceRefs: string[], -) => Promise>; - // @alpha export const isAndCriteria: ( criteria: PermissionCriteria, diff --git a/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts b/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts index d35bf06b24..c8bd94f68e 100644 --- a/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts +++ b/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts @@ -170,6 +170,40 @@ const applyConditions = ( return rule.apply(resource, criteria.params ?? {}); }; +/** + * Options for creating a permission integration router specific + * for a particular resource type. + * + * @public + */ +export type CreatePermissionIntegrationRouterResourceOptions< + TResourceType extends string, + TResource, +> = { + resourceType: TResourceType; + permissions?: Array; + // Do not infer value of TResourceType from supplied rules. + // instead only consider the resourceType parameter, and + // consider any rules whose resource type does not match + // to be an error. + rules: PermissionRule>[]; + getResources: GetResourcesFn; +}; + +/** + * Options for creating a permission integration router. + * + * @public + */ +export type CreatePermissionIntegrationRouterOptions< + TResourceType extends string, + TResource, +> = + | { + permissions: Array; + } + | CreatePermissionIntegrationRouterResourceOptions; + /** * Create an express Router which provides an authorization route to allow * integration between the permission backend and other Backstage backend @@ -205,30 +239,6 @@ const applyConditions = ( * * @public */ - -type CreatePermissionIntegrationRouterResourceOptions< - TResourceType extends string, - TResource, -> = { - resourceType: TResourceType; - permissions?: Array; - // Do not infer value of TResourceType from supplied rules. - // instead only consider the resourceType parameter, and - // consider any rules whose resource type does not match - // to be an error. - rules: PermissionRule>[]; - getResources: GetResourcesFn; -}; - -type CreatePermissionIntegrationRouterOptions< - TResourceType extends string, - TResource, -> = - | { - permissions: Array; - } - | CreatePermissionIntegrationRouterResourceOptions; - export const createPermissionIntegrationRouter = < TResourceType extends string, TResource,