From 71c20d95673306d983b88632a38e84dbc68d427d Mon Sep 17 00:00:00 2001 From: yubonluo Date: Wed, 3 Apr 2024 15:59:41 +0800 Subject: [PATCH] change dashboardAdmin yml config to openseachDashboard Signed-off-by: yubonluo --- src/core/server/mocks.ts | 1 + src/core/server/opensearch_dashboards_config.ts | 8 ++++++++ src/core/server/plugins/plugin_context.test.ts | 1 + src/core/server/plugins/types.ts | 1 + src/legacy/server/config/schema.js | 4 ++++ src/plugins/workspace/config.ts | 8 -------- src/plugins/workspace/server/plugin.ts | 11 ++++++++--- 7 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/core/server/mocks.ts b/src/core/server/mocks.ts index 687d408e40a6..525235b79b25 100644 --- a/src/core/server/mocks.ts +++ b/src/core/server/mocks.ts @@ -80,6 +80,7 @@ export function pluginInitializerContextConfigMock(config: T) { configIndex: '.opensearch_dashboards_config_tests', autocompleteTerminateAfter: duration(100000), autocompleteTimeout: duration(1000), + dashboardAdmin: { groups: [], users: [] }, }, opensearch: { shardTimeout: duration('30s'), diff --git a/src/core/server/opensearch_dashboards_config.ts b/src/core/server/opensearch_dashboards_config.ts index 47fa8a126501..b823d4f83e2d 100644 --- a/src/core/server/opensearch_dashboards_config.ts +++ b/src/core/server/opensearch_dashboards_config.ts @@ -91,6 +91,14 @@ export const config = { defaultValue: 'https://survey.opensearch.org', }), }), + dashboardAdmin: schema.object({ + groups: schema.arrayOf(schema.string(), { + defaultValue: [], + }), + users: schema.arrayOf(schema.string(), { + defaultValue: [], + }), + }), }), deprecations, }; diff --git a/src/core/server/plugins/plugin_context.test.ts b/src/core/server/plugins/plugin_context.test.ts index 7a8ba042825b..24bbd372b194 100644 --- a/src/core/server/plugins/plugin_context.test.ts +++ b/src/core/server/plugins/plugin_context.test.ts @@ -101,6 +101,7 @@ describe('createPluginInitializerContext', () => { configIndex: '.opensearch_dashboards_config', autocompleteTerminateAfter: duration(100000), autocompleteTimeout: duration(1000), + dashboardAdmin: { groups: [], users: [] }, }, opensearch: { shardTimeout: duration(30, 's'), diff --git a/src/core/server/plugins/types.ts b/src/core/server/plugins/types.ts index 59b9881279c3..8a02e2ea706d 100644 --- a/src/core/server/plugins/types.ts +++ b/src/core/server/plugins/types.ts @@ -292,6 +292,7 @@ export const SharedGlobalConfigKeys = { 'configIndex', 'autocompleteTerminateAfter', 'autocompleteTimeout', + 'dashboardAdmin', ] as const, opensearch: ['shardTimeout', 'requestTimeout', 'pingTimeout'] as const, path: ['data'] as const, diff --git a/src/legacy/server/config/schema.js b/src/legacy/server/config/schema.js index a102268effca..84d457f06ca4 100644 --- a/src/legacy/server/config/schema.js +++ b/src/legacy/server/config/schema.js @@ -251,6 +251,10 @@ export default () => survey: Joi.object({ url: Joi.any().default('/'), }), + dashboardAdmin: Joi.object({ + groups: Joi.array().items(Joi.string()).default([]), + users: Joi.array().items(Joi.string()).default([]), + }), }).default(), savedObjects: HANDLED_IN_NEW_PLATFORM, diff --git a/src/plugins/workspace/config.ts b/src/plugins/workspace/config.ts index c5cf89f97249..70c87ac00cfc 100644 --- a/src/plugins/workspace/config.ts +++ b/src/plugins/workspace/config.ts @@ -10,14 +10,6 @@ export const configSchema = schema.object({ permission: schema.object({ enabled: schema.boolean({ defaultValue: true }), }), - dashboardAdmin: schema.object({ - groups: schema.arrayOf(schema.string(), { - defaultValue: [], - }), - users: schema.arrayOf(schema.string(), { - defaultValue: [], - }), - }), }); export type WorkspacePluginConfigType = TypeOf; diff --git a/src/plugins/workspace/server/plugin.ts b/src/plugins/workspace/server/plugin.ts index 72fb6d41806a..2d23a4067e8b 100644 --- a/src/plugins/workspace/server/plugin.ts +++ b/src/plugins/workspace/server/plugin.ts @@ -11,6 +11,7 @@ import { Plugin, Logger, CoreStart, + SharedGlobalConfig, } from '../../../core/server'; import { WORKSPACE_SAVED_OBJECTS_CLIENT_WRAPPER_ID, @@ -39,6 +40,7 @@ export class WorkspacePlugin implements Plugin<{}, {}> { private workspaceConflictControl?: WorkspaceConflictSavedObjectsClientWrapper; private permissionControl?: SavedObjectsPermissionControlContract; private readonly config$: Observable; + private readonly globalConfig$: Observable; private workspaceSavedObjectsClientWrapper?: WorkspaceSavedObjectsClientWrapper; private proxyWorkspaceTrafficToRealHandler(setupDeps: CoreSetup) { @@ -108,9 +110,11 @@ export class WorkspacePlugin implements Plugin<{}, {}> { return toolkit.next(); } - const config: WorkspacePluginConfigType = await this.config$.pipe(first()).toPromise(); - const configGroups = config.dashboardAdmin.groups || []; - const configUsers = config.dashboardAdmin.users || []; + const globalConfig: SharedGlobalConfig = await this.globalConfig$.pipe(first()).toPromise(); + const configGroups = (globalConfig.opensearchDashboards.dashboardAdmin.groups || + []) as string[]; + const configUsers = (globalConfig.opensearchDashboards.dashboardAdmin.users || + []) as string[]; updateDashboardAdminStateForRequest(request, groups, users, configGroups, configUsers); return toolkit.next(); }); @@ -129,6 +133,7 @@ export class WorkspacePlugin implements Plugin<{}, {}> { constructor(initializerContext: PluginInitializerContext) { this.logger = initializerContext.logger.get('plugins', 'workspace'); this.config$ = initializerContext.config.create(); + this.globalConfig$ = initializerContext.config.legacy.globalConfig$; } public async setup(core: CoreSetup, { applicationConfig }: AppPluginSetupDependencies) {