@php use App\Enums\AdminPermissionEnum; use App\Enums\SellerPermissionEnum; use App\Enums\DefaultSystemRolesEnum; use Illuminate\Support\Facades\Auth; $panel = request()->segment(1); @endphp {{$systemSettings['appName'] ??
    @php // Get the menu items based on the authenticated user's role. $userRole = Auth::user(); $currentPanel = $userRole->access_panel->value ?? $panel; $menuItems = config("menu.{$currentPanel}", []); // Choose the correct permission set per panel $allPerms = $currentPanel === 'admin' ? AdminPermissionEnum::values() : (($currentPanel === 'seller') ? SellerPermissionEnum::values() : []); // Super Admin bypass only applies to admin panel $isSuperAdmin = $currentPanel === 'admin' && $userRole->hasRole(DefaultSystemRolesEnum::SUPER_ADMIN()); // Default Seller role can view the full seller module $isDefaultSeller = $currentPanel === 'seller' && $userRole->hasRole(DefaultSystemRolesEnum::SELLER()); $canSee = function ($perm) use ($userRole, $allPerms, $isSuperAdmin, $isDefaultSeller) { // If default seller role on seller panel -> always visible if ($isDefaultSeller) { return true; } // No permission specified -> visible if (empty($perm)) { return true; } // If permission slug does not exist in the panel's enum -> default visible if (!in_array($perm, $allPerms, true)) { return true; } // Super Admin bypass if ($isSuperAdmin) { return true; } try { return $userRole->hasPermissionTo($perm); } catch (\Throwable $e) { return false; } }; @endphp @foreach ($menuItems as $key => $item) @php // Determine if the menu item has sub-routes (dropdown) or a single link. $isDropdown = is_array($item['route']); $isActive = isset($page, $item['active']) && $page === $item['active']; // Check permission for single link or any children for dropdown if (!$isDropdown) { if (!$canSee($item['permission'] ?? null)) { continue; // skip this menu item if not permitted } } // For dropdowns, pre-filter sub items; if none remain, skip parent entirely $visibleSubRoutes = null; if ($isDropdown) { $visibleSubRoutes = []; foreach ($item['route'] as $srKey => $subRoute) { $perm = is_array($subRoute) ? ($subRoute['permission'] ?? null) : null; if ($canSee($perm)) { $visibleSubRoutes[$srKey] = $subRoute; } } if (count($visibleSubRoutes) === 0) { continue; // no visible children => hide the whole dropdown } } @endphp
  • @if ($isDropdown) {{ __($item['title']) }} @if (count($visibleSubRoutes) > 0)
    @foreach ($visibleSubRoutes as $subRoute) @php // If the sub-route is an array, support passing route parameters. if (is_array($subRoute)) { // If the array has an explicit 'route' key, use it; otherwise, assume the first value is the route name. $routeName = $subRoute['route'] ?? array_values($subRoute)[0]; $routeParams = $subRoute['params'] ?? (is_array($subRoute) ? $subRoute : []); } else { $routeName = $subRoute; $routeParams = []; } $isSubActive = isset($subRoute) && isset($sub_page) && $subRoute['sub_active'] === $sub_page; // dd($subRoute['sub_title']) @endphp {{ __($subRoute['sub_title']) }} @endforeach
    @endif @else {{ __($item['title']) }} @endif
  • @endforeach