Files
redash/client/app/services/settingsMenu.js
Gabriel Dutra 465dbc03b7 Hide unavailable page links to non-admin users in settings and header (#4524)
* Filter unavailable menu items in SettingsWrapper

* Don't show Alert Destination in header to users
2020-01-08 10:59:59 +02:00

37 lines
827 B
JavaScript

import { isFunction, extend, omit, sortBy, find } from "lodash";
import { currentUser } from "@/services/auth";
class SettingsMenuItem {
constructor(menuItem) {
extend(this, { pathPrefix: `/${menuItem.path}` }, omit(menuItem, ["isActive"]));
if (isFunction(menuItem.isActive)) {
this.isActive = menuItem.isActive;
}
}
isActive(path) {
return path.startsWith(this.pathPrefix);
}
isAvailable() {
return this.permission === undefined || currentUser.hasPermission(this.permission);
}
}
class SettingsMenu {
constructor() {
this.items = [];
}
add(item) {
this.items.push(new SettingsMenuItem(item));
this.items = sortBy(this.items, "order");
}
getActiveItem(path) {
return find(this.items, item => item.isActive(path));
}
}
export default new SettingsMenu();