api report and minor fixes

Signed-off-by: Vincenzo Scamporlino <me@vinzscam.dev>
This commit is contained in:
Vincenzo Scamporlino
2022-04-05 16:05:25 +02:00
parent 173aadff5b
commit b4af8664b5
8 changed files with 28 additions and 15 deletions
+2 -1
View File
@@ -19,6 +19,7 @@ import { JsonValue } from '@backstage/types';
import { LocationEntityV1alpha1 } from '@backstage/catalog-model';
import { Logger } from 'winston';
import { Permission } 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';
import { PermissionEvaluator } from '@backstage/plugin-permission-common';
@@ -181,7 +182,7 @@ export type CatalogEnvironment = {
database: PluginDatabaseManager;
config: Config;
reader: UrlReader;
permissions: PermissionEvaluator;
permissions: PermissionEvaluator | PermissionAuthorizer;
};
// @alpha
@@ -382,13 +382,13 @@ export class CatalogBuilder {
const unauthorizedEntitiesCatalog = new DefaultEntitiesCatalog(dbClient);
let permissionEvaluator: PermissionEvaluator;
if (!permissions.hasOwnProperty('query')) {
if ('query' in permissions) {
permissionEvaluator = permissions as PermissionEvaluator;
} else {
logger.warn(
'PermissionAuthorizer is deprecated. Please use PermissionEvaluator instead of PermissionAuthorizer in catalog.ts',
'PermissionAuthorizer is deprecated. Please use an instance of PermissionEvaluator instead of PermissionAuthorizer in PluginEnvironment#permissions',
);
permissionEvaluator = toPermissionEvaluator(permissions);
} else {
permissionEvaluator = permissions as PermissionEvaluator;
}
const entitiesCatalog = new AuthorizedEntitiesCatalog(
+2 -1
View File
@@ -8,6 +8,7 @@ import { CompoundEntityRef } from '@backstage/catalog-model';
import { Config } from '@backstage/config';
import express from 'express';
import { Logger } from 'winston';
import { PermissionAuthorizer } from '@backstage/plugin-permission-common';
import { PermissionEvaluator } from '@backstage/plugin-permission-common';
// Warning: (ae-missing-release-tag) "createRouter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
@@ -98,6 +99,6 @@ export interface RouterOptions {
// (undocumented)
logger: Logger;
// (undocumented)
permissions?: PermissionEvaluator;
permissions?: PermissionEvaluator | PermissionAuthorizer;
}
```
@@ -40,11 +40,11 @@ export async function createRouter(
const { jenkinsInfoProvider, permissions, logger } = options;
let permissionEvaluator: PermissionEvaluator | undefined;
if (permissions?.hasOwnProperty('query')) {
if (permissions && 'query' in permissions) {
permissionEvaluator = permissions as PermissionEvaluator;
} else {
logger.warn(
'PermissionAuthorizer is deprecated. Please use PermissionEvaluator instead of PermissionAuthorizer in your jenkins.ts',
'PermissionAuthorizer is deprecated. Please use an instance of PermissionEvaluator instead of PermissionAuthorizer in PluginEnvironment#permissions',
);
permissionEvaluator = permissions
? toPermissionEvaluator(permissions)
+5
View File
@@ -225,4 +225,9 @@ export type ResourcePermission<TResourceType extends string = string> =
resourceType: TResourceType;
}
>;
// @public
export function toPermissionEvaluator(
permissionAuthorizer: PermissionAuthorizer,
): PermissionEvaluator;
```
@@ -87,6 +87,11 @@ export function isDeletePermission(permission: Permission) {
return permission.attributes.action === 'delete';
}
/**
* Convert {@link PermissionAuthorizer} to {@link PermissionEvaluator}.
*
* @public
*/
export function toPermissionEvaluator(
permissionAuthorizer: PermissionAuthorizer,
): PermissionEvaluator {
@@ -103,8 +108,8 @@ export function toPermissionEvaluator(
requests: QueryPermissionRequest[],
options?: EvaluatorRequestOptions,
): Promise<QueryPermissionResponse[]> {
// @ts-expect-error
const parsedRequests: AuthorizePermissionRequest[] = requests;
const parsedRequests =
requests as unknown as AuthorizePermissionRequest[];
return permissionAuthorizer.authorize(parsedRequests, options);
},
};
+2 -1
View File
@@ -7,6 +7,7 @@ import { Config } from '@backstage/config';
import { DocumentTypeInfo } from '@backstage/plugin-search-common';
import express from 'express';
import { Logger } from 'winston';
import { PermissionAuthorizer } from '@backstage/plugin-permission-common';
import { PermissionEvaluator } from '@backstage/plugin-permission-common';
import { SearchEngine } from '@backstage/plugin-search-backend-node';
@@ -21,7 +22,7 @@ export function createRouter(options: RouterOptions): Promise<express.Router>;
export type RouterOptions = {
engine: SearchEngine;
types: Record<string, DocumentTypeInfo>;
permissions: PermissionEvaluator;
permissions: PermissionEvaluator | PermissionAuthorizer;
config: Config;
logger: Logger;
};
+4 -4
View File
@@ -76,13 +76,13 @@ export async function createRouter(
});
let permissionEvaluator: PermissionEvaluator;
if (!permissions.hasOwnProperty('query')) {
if ('query' in permissions) {
permissionEvaluator = permissions as PermissionEvaluator;
} else {
logger.warn(
'PermissionAuthorizer is deprecated. Please use PermissionEvaluator instead of PermissionAuthorizer in search.ts',
'PermissionAuthorizer is deprecated. Please use an instance of PermissionEvaluator instead of PermissionAuthorizer in PluginEnvironment#permissions',
);
permissionEvaluator = toPermissionEvaluator(permissions);
} else {
permissionEvaluator = permissions as PermissionEvaluator;
}
const engine = config.getOptionalBoolean('permission.enabled')