kibana/x-pack/plugins/dashboard_mode/index.js
Tyler Smalley b93b868b0f
Moves styleSheetPath to uiExports (#23007) (#23385)
This was previously defined in uiExports.app, which limited plugins which are not an app of providing a stylesheet. This allows any plugin to define a stylesheet which will be available on page load.
2018-09-20 20:42:04 -07:00

78 lines
2.5 KiB
JavaScript

/*
* 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 { resolve } from 'path';
import {
CONFIG_DASHBOARD_ONLY_MODE_ROLES
} from './common';
import {
getDashboardModeAuthScope,
createDashboardModeRequestInterceptor,
} from './server';
// Copied largely from plugins/kibana/index.js. The dashboard viewer includes just the dashboard section of
// the standard kibana plugin. We don't want to include code for the other links (visualize, dev tools, etc)
// since it's view only, but we want the urls to be the same, so we are using largely the same setup.
export function dashboardMode(kibana) {
const kbnBaseUrl = '/app/kibana';
return new kibana.Plugin({
id: 'dashboard_mode',
publicDir: resolve(__dirname, 'public'),
require: ['kibana', 'elasticsearch', 'xpack_main'],
uiExports: {
uiSettingDefaults: {
[CONFIG_DASHBOARD_ONLY_MODE_ROLES]: {
name: 'Dashboards only roles',
description: `Roles that belong to View Dashboards Only mode`,
value: ['kibana_dashboard_only_user'],
category: ['dashboard'],
}
},
app: {
id: 'dashboardViewer',
title: 'Dashboard Viewer',
listed: false,
hidden: true,
description: 'view dashboards',
main: 'plugins/dashboard_mode/dashboard_viewer',
links: [
{
id: 'kibana:dashboard',
title: 'Dashboard',
order: -1001,
url: `${kbnBaseUrl}#/dashboards`,
subUrlBase: `${kbnBaseUrl}#/dashboard`,
description: 'Dashboard Viewer',
icon: 'plugins/kibana/assets/dashboard.svg',
}
],
},
},
config(Joi) {
return Joi.object({
enabled: Joi.boolean().default(true)
}).default();
},
init(server) {
server.injectUiAppVars('dashboardViewer', async () => (
await server.getInjectedUiAppVars('kibana')
));
if (server.plugins.security) {
// register auth getter with security plugin
server.plugins.security.registerAuthScopeGetter(getDashboardModeAuthScope);
// extend the server to intercept requests
const dashboardViewerApp = server.getHiddenUiAppById('dashboardViewer');
server.ext(createDashboardModeRequestInterceptor(dashboardViewerApp));
}
}
});
}