File manager - Edit - /var/www/payraty/helpdesk/common/resources/client/menus/use-custom-menu.ts
Back
import {MenuConfig} from '../core/settings/settings'; import {useAuth} from '../auth/use-auth'; import {useSettings} from '../core/settings/use-settings'; import dot from 'dot-object'; import {useMemo} from 'react'; export function useCustomMenu(menuOrPosition?: string | MenuConfig) { const settings = useSettings(); const {user, hasPermission} = useAuth(); return useMemo(() => { if (!menuOrPosition) { return null; } const menu = typeof menuOrPosition === 'string' ? settings.menus?.find(s => s.positions?.includes(menuOrPosition)) : menuOrPosition; if (menu) { menu.items = menu.items.filter(item => { const hasRoles = (item.roles || []).every( a => user?.roles.find(b => b.id === a), ); const hasPermissions = (item.permissions || []).every(a => hasPermission(a), ); const hasSettings = !item.settings || Object.entries(item.settings).every(([key, value]) => { return dot.pick(key, settings) == value; }); // make sure item has action, otherwise router link will error out return item.action && hasRoles && hasPermissions && hasSettings; }); } return menu; }, [hasPermission, settings, menuOrPosition, user]); }
| ver. 1.4 |
Github
|
.
| PHP 8.3.30 | Generation time: 0.32 |
proxy
|
phpinfo
|
Settings