@php $user = auth()->user(); $hiddenMenuUrls = []; $injectablePluginMenus = []; if ($user && $user->level !== 'admin') { $accessService = app(\Plugins\RbacManager\Services\RbacAccessService::class); if ($accessService->userHasRoles($user)) { $accessService->ensureSynced(); $hiddenMenuUrls = $accessService->menuItems() ->reject(fn ($menuItem) => $accessService->canViewMenuKey($user, $menuItem->key)) ->map(function ($menuItem) { if (!$menuItem->route_name || !\Illuminate\Support\Facades\Route::has($menuItem->route_name)) { return null; } try { return route($menuItem->route_name); } catch (\Throwable $e) { return null; } }) ->filter() ->unique() ->values() ->all(); $pluginNavItems = app(\App\Services\PluginNavRegistry::class)->all(); $injectablePluginMenus = collect($pluginNavItems) ->filter(function (array $navItem) use ($accessService, $user) { $menuKey = $accessService->makePluginMenuKey($navItem); return $accessService->canViewMenuKey($user, $menuKey); }) ->map(function (array $navItem) { if (empty($navItem['route_name']) || !\Illuminate\Support\Facades\Route::has($navItem['route_name'])) { return null; } if (!empty($navItem['requires_device']) && !session()->has('selectedDevice')) { return null; } try { return [ 'href' => route($navItem['route_name']), 'label' => __($navItem['label'] ?? ''), 'icon' => $navItem['icon'] ?? 'tabler-puzzle', ]; } catch (\Throwable $e) { return null; } }) ->filter() ->unique('href') ->values() ->all(); } } @endphp @if (!empty($hiddenMenuUrls) || !empty($injectablePluginMenus)) @endif