UNPKG

@geogirafe/lib-geoportal

Version:

GeoGirafe is a flexible application to build online geoportals.

41 lines (40 loc) 1.43 kB
// SPDX-License-Identifier: Apache-2.0 import GirafeSingleton from '../../base/GirafeSingleton.js'; class PluginManager extends GirafeSingleton { initializeSingleton() { this.context.stateManager.subscribe('oauth.userInfo', () => this.filterPlugins(document)); this.filterPlugins(document); } filterPlugins(dom) { const linkedToPlugin = dom.querySelectorAll('[plugin]'); linkedToPlugin.forEach((item) => { const pluginName = item.getAttribute('plugin'); if (pluginName) { if (pluginName.startsWith('config:')) { this.filterPluginFromConfig(item, pluginName.split(':')[1]); } else { this.filterPlugin(item, pluginName); } } }); } filterPluginFromConfig(item, configName) { if (this.context.configManager.Config[configName]) { item.classList.remove('hidden'); } else { item.classList.add('hidden'); } } filterPlugin(item, pluginName) { if (this.context.stateManager.state.oauth.userInfo?.functionalities?.authorized_plugins?.includes(pluginName)) { item.classList.remove('hidden'); } else { // Plugin is not activated for the user item.classList.add('hidden'); } } } export default PluginManager;