From fafdd16be73c84b44ed86de2996fea97b3ec0bf4 Mon Sep 17 00:00:00 2001 From: Kevin Lacabane Date: Tue, 30 Jul 2024 19:18:21 +0200 Subject: [PATCH] [eem] use api key clients to check enablement state (#189502) --- .../entity_manager/server/lib/utils.ts | 48 +++++++------------ .../server/routes/enablement/check.ts | 4 +- 2 files changed, 18 insertions(+), 34 deletions(-) diff --git a/x-pack/plugins/observability_solution/entity_manager/server/lib/utils.ts b/x-pack/plugins/observability_solution/entity_manager/server/lib/utils.ts index d948ac28bda313..d1d76e147efb0e 100644 --- a/x-pack/plugins/observability_solution/entity_manager/server/lib/utils.ts +++ b/x-pack/plugins/observability_solution/entity_manager/server/lib/utils.ts @@ -5,37 +5,21 @@ * 2.0. */ -import moment from 'moment'; +import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; +import { getFakeKibanaRequest } from '@kbn/security-plugin/server/authentication/api_keys/fake_kibana_request'; +import { EntityManagerServerSetup } from '../types'; +import { EntityDiscoveryAPIKey } from './auth/api_key/api_key'; -export function toArray(maybeArray: T | T[] | undefined): T[] { - if (!maybeArray) { - return []; - } - if (Array.isArray(maybeArray)) { - return maybeArray; - } - return [maybeArray]; -} - -export const isValidRange = (from: string, to: string): boolean => { - if (moment(from).isAfter(to)) { - return false; - } - return true; +export const getClientsFromAPIKey = ({ + apiKey, + server, +}: { + apiKey: EntityDiscoveryAPIKey; + server: EntityManagerServerSetup; +}): { esClient: ElasticsearchClient; soClient: SavedObjectsClientContract } => { + const fakeRequest = getFakeKibanaRequest({ id: apiKey.id, api_key: apiKey.apiKey }); + const esClient = server.core.elasticsearch.client.asScoped(fakeRequest).asCurrentUser; + const soClient = server.core.savedObjects.getScopedClient(fakeRequest); + return { esClient, soClient }; }; - -export function isStringOrNonEmptyArray( - value: string | string[] | undefined -): value is string | string[] { - if (typeof value === 'undefined') { - return false; - } - if (Array.isArray(value) && value.length === 0) { - return false; - } - return true; -} - -export function extractFieldValue(maybeArray: T | T[] | undefined): T { - return toArray(maybeArray)[0]; -} diff --git a/x-pack/plugins/observability_solution/entity_manager/server/routes/enablement/check.ts b/x-pack/plugins/observability_solution/entity_manager/server/routes/enablement/check.ts index 8ee8de3751ab21..23343026e33328 100644 --- a/x-pack/plugins/observability_solution/entity_manager/server/routes/enablement/check.ts +++ b/x-pack/plugins/observability_solution/entity_manager/server/routes/enablement/check.ts @@ -16,6 +16,7 @@ import { } from '../../../common/errors'; import { findEntityDefinitions } from '../../lib/entities/find_entity_definition'; import { builtInDefinitions } from '../../lib/entities/built_in'; +import { getClientsFromAPIKey } from '../../lib/utils'; export function checkEntityDiscoveryEnabledRoute({ router, @@ -43,8 +44,7 @@ export function checkEntityDiscoveryEnabledRoute {