Avoid PermissionEvaluator breaking changes

Signed-off-by: Vincenzo Scamporlino <me@vinzscam.dev>
This commit is contained in:
Vincenzo Scamporlino
2022-04-05 12:47:28 +02:00
parent 8b27170d30
commit 173aadff5b
5 changed files with 102 additions and 15 deletions
+22 -3
View File
@@ -23,7 +23,11 @@ import { InputError } from '@backstage/errors';
import { Config } from '@backstage/config';
import { JsonObject, JsonValue } from '@backstage/types';
import { getBearerTokenFromAuthorizationHeader } from '@backstage/plugin-auth-node';
import { PermissionEvaluator } from '@backstage/plugin-permission-common';
import {
PermissionAuthorizer,
PermissionEvaluator,
toPermissionEvaluator,
} from '@backstage/plugin-permission-common';
import {
DocumentTypeInfo,
IndexableResultSet,
@@ -50,7 +54,7 @@ const jsonObjectSchema: z.ZodSchema<JsonObject> = z.lazy(() => {
export type RouterOptions = {
engine: SearchEngine;
types: Record<string, DocumentTypeInfo>;
permissions: PermissionEvaluator;
permissions: PermissionEvaluator | PermissionAuthorizer;
config: Config;
logger: Logger;
};
@@ -71,8 +75,23 @@ export async function createRouter(
pageCursor: z.string().optional(),
});
let permissionEvaluator: PermissionEvaluator;
if (!permissions.hasOwnProperty('query')) {
logger.warn(
'PermissionAuthorizer is deprecated. Please use PermissionEvaluator instead of PermissionAuthorizer in search.ts',
);
permissionEvaluator = toPermissionEvaluator(permissions);
} else {
permissionEvaluator = permissions as PermissionEvaluator;
}
const engine = config.getOptionalBoolean('permission.enabled')
? new AuthorizedSearchEngine(inputEngine, types, permissions, config)
? new AuthorizedSearchEngine(
inputEngine,
types,
permissionEvaluator,
config,
)
: inputEngine;
const filterResultSet = ({ results, ...resultSet }: SearchResultSet) => ({