mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
* Removing circular dependency between spaces and security * Apply suggestions from code review Co-authored-by: Constance <constancecchen@users.noreply.github.com> Co-authored-by: Aleh Zasypkin <aleh.zasypkin@gmail.com> * Tests refactor - Reorganize top level describes into 3 space-based blocks into based on spaces: - space disabled - spaces plugin unavailable - space enabled (most previous tests go under this new block) with new beforeEach - wrote new tests for uncovered lines 58, 66-69 * Review1: address PR feedback * changing fake requests for alerts/actions * Fixing tests * fixing more tests * Additional testing and refactoring * Apply suggestions from code review Co-authored-by: Aleh Zasypkin <aleh.zasypkin@gmail.com> * Review 2: Address feedback * Make ESLint happy again Co-authored-by: Constance <constancecchen@users.noreply.github.com> Co-authored-by: Aleh Zasypkin <aleh.zasypkin@gmail.com> Co-authored-by: Constance Chen <constance.chen.3@gmail.com> Co-authored-by: Constance <constancecchen@users.noreply.github.com> Co-authored-by: Aleh Zasypkin <aleh.zasypkin@gmail.com> Co-authored-by: Constance Chen <constance.chen.3@gmail.com>
40 lines
1.4 KiB
TypeScript
40 lines
1.4 KiB
TypeScript
/*
|
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
* or more contributor license agreements. Licensed under the Elastic License;
|
|
* you may not use this file except in compliance with the Elastic License.
|
|
*/
|
|
|
|
import { Legacy } from 'kibana';
|
|
import { KibanaRequest } from '../../../../../src/core/server';
|
|
import { SpacesPluginStart } from '../../../spaces/server';
|
|
|
|
export type RequestFacade = KibanaRequest | Legacy.Request;
|
|
|
|
export function spacesUtilsProvider(
|
|
getSpacesPlugin: (() => Promise<SpacesPluginStart>) | undefined,
|
|
request: RequestFacade
|
|
) {
|
|
async function isMlEnabledInSpace(): Promise<boolean> {
|
|
if (getSpacesPlugin === undefined) {
|
|
// if spaces is disabled force isMlEnabledInSpace to be true
|
|
return true;
|
|
}
|
|
const space = await (await getSpacesPlugin()).spacesService.getActiveSpace(
|
|
request instanceof KibanaRequest ? request : KibanaRequest.from(request)
|
|
);
|
|
return space.disabledFeatures.includes('ml') === false;
|
|
}
|
|
|
|
async function getAllSpaces(): Promise<string[] | null> {
|
|
if (getSpacesPlugin === undefined) {
|
|
return null;
|
|
}
|
|
const client = (await getSpacesPlugin()).spacesService.createSpacesClient(
|
|
request instanceof KibanaRequest ? request : KibanaRequest.from(request)
|
|
);
|
|
const spaces = await client.getAll();
|
|
return spaces.map((s) => s.id);
|
|
}
|
|
|
|
return { isMlEnabledInSpace, getAllSpaces };
|
|
}
|