Export permission criteria utilities

Signed-off-by: Vincenzo Scamporlino <me@vinzscam.dev>
This commit is contained in:
Vincenzo Scamporlino
2022-03-01 12:44:06 +01:00
parent e5ccbae0bc
commit 7e0a0109bf
3 changed files with 55 additions and 12 deletions
+18
View File
@@ -3,6 +3,8 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { AllOfCriteria } from '@backstage/plugin-permission-common';
import { AnyOfCriteria } from '@backstage/plugin-permission-common';
import { AuthorizeDecision } from '@backstage/plugin-permission-common';
import { AuthorizeQuery } from '@backstage/plugin-permission-common';
import { AuthorizeRequestOptions } from '@backstage/plugin-permission-common';
@@ -11,6 +13,7 @@ import { BackstageIdentityResponse } from '@backstage/plugin-auth-node';
import { Config } from '@backstage/config';
import express from 'express';
import { Identified } from '@backstage/plugin-permission-common';
import { NotCriteria } from '@backstage/plugin-permission-common';
import { PermissionAuthorizer } from '@backstage/plugin-permission-common';
import { PermissionCondition } from '@backstage/plugin-permission-common';
import { PermissionCriteria } from '@backstage/plugin-permission-common';
@@ -118,6 +121,21 @@ export type DefinitivePolicyDecision = {
result: AuthorizeResult.ALLOW | AuthorizeResult.DENY;
};
// @alpha
export const isAndCriteria: <T>(
criteria: PermissionCriteria<T>,
) => criteria is AllOfCriteria<T>;
// @alpha
export const isNotCriteria: <T>(
criteria: PermissionCriteria<T>,
) => criteria is NotCriteria<T>;
// @alpha
export const isOrCriteria: <T>(
criteria: PermissionCriteria<T>,
) => criteria is AnyOfCriteria<T>;
// @public
export const makeCreatePermissionRule: <TResource, TQuery>() => <
TParams extends unknown[],
@@ -19,3 +19,4 @@ export * from './createConditionExports';
export * from './createConditionTransformer';
export * from './createPermissionIntegrationRouter';
export * from './createPermissionRule';
export { isAndCriteria, isOrCriteria, isNotCriteria } from './util';
+36 -12
View File
@@ -22,20 +22,44 @@ import {
} from '@backstage/plugin-permission-common';
import { PermissionRule } from '../types';
export const isAndCriteria = (
filter: PermissionCriteria<unknown>,
): filter is AllOfCriteria<unknown> =>
Object.prototype.hasOwnProperty.call(filter, 'allOf');
/**
* Utility function used to parse a PermissionCriteria
* @param criteria - a PermissionCriteria
* @alpha
*
* @returns `true` if the permission criteria is of type allOf,
* narrowing down `criteria` to the specific type.
*/
export const isAndCriteria = <T>(
criteria: PermissionCriteria<T>,
): criteria is AllOfCriteria<T> =>
Object.prototype.hasOwnProperty.call(criteria, 'allOf');
export const isOrCriteria = (
filter: PermissionCriteria<unknown>,
): filter is AnyOfCriteria<unknown> =>
Object.prototype.hasOwnProperty.call(filter, 'anyOf');
/**
* Utility function used to parse a PermissionCriteria of type
* @param criteria - a PermissionCriteria
* @alpha
*
* @returns `true` if the permission criteria is of type anyOf,
* narrowing down `criteria` to the specific type.
*/
export const isOrCriteria = <T>(
criteria: PermissionCriteria<T>,
): criteria is AnyOfCriteria<T> =>
Object.prototype.hasOwnProperty.call(criteria, 'anyOf');
export const isNotCriteria = (
filter: PermissionCriteria<unknown>,
): filter is NotCriteria<unknown> =>
Object.prototype.hasOwnProperty.call(filter, 'not');
/**
* Utility function used to parse a PermissionCriteria
* @param criteria - a PermissionCriteria
* @alpha
*
* @returns `true` if the permission criteria is of type not,
* narrowing down `criteria` to the specific type.
*/
export const isNotCriteria = <T>(
criteria: PermissionCriteria<T>,
): criteria is NotCriteria<T> =>
Object.prototype.hasOwnProperty.call(criteria, 'not');
export const createGetRule = <TResource, TQuery>(
rules: PermissionRule<TResource, TQuery>[],