permission-node: improve api report for createPermissionIntegrationRouter
Co-authored-by: Harry Hogg <hhogg@spotify.com> Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
This commit is contained in:
@@ -111,6 +111,11 @@ export const createConditionTransformer: <
|
||||
permissionRules: [...TRules],
|
||||
) => ConditionTransformer<TQuery>;
|
||||
|
||||
// @public
|
||||
export const createIsAuthorized: <TResource, TQuery>(
|
||||
rules: PermissionRule<TResource, TQuery, string, PermissionRuleParams>[],
|
||||
) => (decision: PolicyDecision, resource: TResource | undefined) => boolean;
|
||||
|
||||
// @public
|
||||
export const createPermissionIntegrationRouter: <
|
||||
TResourceType extends string,
|
||||
@@ -124,7 +129,7 @@ export const createPermissionIntegrationRouter: <
|
||||
NoInfer<TResourceType>,
|
||||
PermissionRuleParams
|
||||
>[];
|
||||
getResources?: GetResourcesFn<TResource> | undefined;
|
||||
getResources: (resourceRefs: string[]) => Promise<(TResource | undefined)[]>;
|
||||
}) => express.Router;
|
||||
|
||||
// @public
|
||||
@@ -137,11 +142,6 @@ export const createPermissionRule: <
|
||||
rule: PermissionRule<TResource, TQuery, TResourceType, TParams>,
|
||||
) => PermissionRule<TResource, TQuery, TResourceType, TParams>;
|
||||
|
||||
// @public
|
||||
export type GetResourcesFn<TResource> = (
|
||||
resourceRefs: string[],
|
||||
) => Promise<Array<TResource | undefined>>;
|
||||
|
||||
// @alpha
|
||||
export const isAndCriteria: <T>(
|
||||
criteria: PermissionCriteria<T>,
|
||||
|
||||
@@ -170,6 +170,40 @@ const applyConditions = <TResourceType extends string, TResource>(
|
||||
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<Permission>;
|
||||
// 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<TResource, any, NoInfer<TResourceType>>[];
|
||||
getResources: GetResourcesFn<TResource>;
|
||||
};
|
||||
|
||||
/**
|
||||
* Options for creating a permission integration router.
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export type CreatePermissionIntegrationRouterOptions<
|
||||
TResourceType extends string,
|
||||
TResource,
|
||||
> =
|
||||
| {
|
||||
permissions: Array<Permission>;
|
||||
}
|
||||
| CreatePermissionIntegrationRouterResourceOptions<TResourceType, TResource>;
|
||||
|
||||
/**
|
||||
* 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 = <TResourceType extends string, TResource>(
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
|
||||
type CreatePermissionIntegrationRouterResourceOptions<
|
||||
TResourceType extends string,
|
||||
TResource,
|
||||
> = {
|
||||
resourceType: TResourceType;
|
||||
permissions?: Array<Permission>;
|
||||
// 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<TResource, any, NoInfer<TResourceType>>[];
|
||||
getResources: GetResourcesFn<TResource>;
|
||||
};
|
||||
|
||||
type CreatePermissionIntegrationRouterOptions<
|
||||
TResourceType extends string,
|
||||
TResource,
|
||||
> =
|
||||
| {
|
||||
permissions: Array<Permission>;
|
||||
}
|
||||
| CreatePermissionIntegrationRouterResourceOptions<TResourceType, TResource>;
|
||||
|
||||
export const createPermissionIntegrationRouter = <
|
||||
TResourceType extends string,
|
||||
TResource,
|
||||
|
||||
Reference in New Issue
Block a user