21 lines
1008 B
JavaScript
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);
|