Browse Source

fix(elasticsearch-plugin): Do not expose private facets in search result

Michael Bromley 5 years ago
parent
commit
60bb5b9fe1

+ 2 - 0
packages/core/e2e/default-search-plugin.e2e-spec.ts

@@ -282,6 +282,8 @@ describe('Default search plugin', () => {
                 },
             });
 
+            await awaitRunningJobs(adminClient);
+
             const result = await shopClient.query<SearchFacetValues.Query, SearchFacetValues.Variables>(
                 SEARCH_GET_FACET_VALUES,
                 {

+ 2 - 0
packages/elasticsearch-plugin/e2e/elasticsearch-plugin.e2e-spec.ts

@@ -301,6 +301,8 @@ describe('Elasticsearch plugin', () => {
                 },
             });
 
+            await awaitRunningJobs(adminClient);
+
             const result = await shopClient.query<SearchFacetValues.Query, SearchFacetValues.Variables>(
                 SEARCH_GET_FACET_VALUES,
                 {

+ 2 - 1
packages/elasticsearch-plugin/src/elasticsearch-resolver.ts

@@ -33,7 +33,8 @@ export class ShopElasticSearchResolver implements Omit<SearchResolver, 'reindex'
         @Ctx() ctx: RequestContext,
         @Parent() parent: { input: ElasticSearchInput },
     ): Promise<Array<{ facetValue: FacetValue; count: number }>> {
-        return this.elasticsearchService.facetValues(ctx, parent.input, true);
+        const facetValues = await this.elasticsearchService.facetValues(ctx, parent.input, true);
+        return facetValues.filter(i => !i.facetValue.facet.isPrivate);
     }
 
     @ResolveProperty()