From bdbacb3b9c531b14d8526d76866221555e4ef5b8 Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino Date: Tue, 25 Jan 2022 11:46:58 +0000 Subject: [PATCH] search-backend: handle missing type configuration in AuthorizedSearchEngine The search-backend router ensures that all requested types are configured, but since we don't know how this search engine will be used, it's good to properly handle the case where an unconfigured type is supplied. Signed-off-by: MT Lewis --- .../search-backend/src/service/AuthorizedSearchEngine.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/search-backend/src/service/AuthorizedSearchEngine.ts b/plugins/search-backend/src/service/AuthorizedSearchEngine.ts index c39d66a22b..cfc2f9b34d 100644 --- a/plugins/search-backend/src/service/AuthorizedSearchEngine.ts +++ b/plugins/search-backend/src/service/AuthorizedSearchEngine.ts @@ -90,13 +90,13 @@ export class AuthorizedSearchEngine implements SearchEngine { const authorizer = new DataLoader((requests: readonly AuthorizeQuery[]) => this.permissions.authorize(requests.slice(), options), ); - const requestedTypes = query.types || Object.keys(this.types); + const typeDecisions = zipObject( requestedTypes, await Promise.all( requestedTypes.map(type => { - const permission = this.types[type].visibilityPermission; + const permission = this.types[type]?.visibilityPermission; return permission ? authorizer.load({ permission }) @@ -162,7 +162,7 @@ export class AuthorizedSearchEngine implements SearchEngine { return result; } - const permission = this.types[result.type].visibilityPermission; + const permission = this.types[result.type]?.visibilityPermission; const resourceRef = result.document.authorization?.resourceRef; if (!permission || !resourceRef) {