/* 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);