bmc_hub/static/js/menu-access.js

21 lines
1008 B
JavaScript

/* Effective group permissions supplement personal menu preferences. */
(function (root) {
'use strict';
function allowed(user, required) {
if (!user) return false;
if (user.is_superadmin === true) return true;
const permissions = new Set(Array.isArray(user.permissions) ? user.permissions : []);
return required.split('|').some(group => {
const codes = group.split(',').map(value => value.trim()).filter(Boolean);
return codes.length > 0 && codes.every(permission => permissions.has(permission));
});
}
function apply(user, document) {
document.querySelectorAll('[data-menu-permission]').forEach(node => {
node.toggleAttribute('data-access-denied', !allowed(user, node.dataset.menuPermission));
});
}
root.BmcMenuAccess = {allowed, apply};
if (typeof module !== 'undefined' && module.exports) module.exports = root.BmcMenuAccess;
})(typeof window !== 'undefined' ? window : globalThis);