@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
41 lines (40 loc) • 1.43 kB
JavaScript
// 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;