@php use App\Enums\AdminPermissionEnum; use App\Enums\SellerPermissionEnum; use App\Enums\DefaultSystemRolesEnum; use App\Models\Setting; use Illuminate\Support\Facades\Auth; $panel = request()->segment(1); $isImpersonatingForLogo = session('impersonating_as_seller', false); $linkPanel = $isImpersonatingForLogo ? 'seller' : $panel; @endphp {{ $systemSettings['appName'] ?? '' }} {{ $systemSettings['appName'] ?? '' }}
    @php // Get the menu items based on the authenticated user's role. $userRole = Auth::user(); // If impersonating as seller, force the seller panel for the sidebar $isImpersonating = session('impersonating_as_seller', false); $currentPanel = $isImpersonating ? 'seller' : $userRole->access_panel->value ?? $panel; $menuItems = config("menu.{$currentPanel}", []); $badgeCounts = \App\Helpers\SidebarBadgeHelper::getBadgeCounts($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 // While impersonating as seller, treat the user as default seller for menu visibility $isDefaultSeller = $currentPanel === 'seller' && ($isImpersonating || $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) {{-- Section divider --}} @if (($item['type'] ?? '') === 'section')
  • {{ __($item['title']) }}
  • @continue @endif @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']; // Hide entire subscription module when system is Single Vendor (both admin and seller panels) if (Setting::isSystemVendorTypeSingle() && $key === 'subscriptions') { continue; } if ( !Setting::isSubscriptionEnabled() && $key === 'subscriptions' && $currentPanel === 'seller' ) { continue; } // 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) { // Hide Add Sellers from admin sidebar when system is single-vendor if ( $currentPanel === 'admin' && $srKey === 'add_sellers' && Setting::isSystemVendorTypeSingle() ) { continue; } $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) @php $parentBadgeCount = 0; if (!empty($visibleSubRoutes)) { foreach ($visibleSubRoutes as $srKey => $subRoute) { if (is_array($subRoute) && !empty($subRoute['badge_key'])) { $parentBadgeCount += $badgeCounts[$subRoute['badge_key']] ?? 0; } } } if (!empty($item['badge_key'])) { $parentBadgeCount += $badgeCounts[$item['badge_key']] ?? 0; } @endphp @if ($parentBadgeCount > 0) @endif {{ __($item['title']) }} @if ($parentBadgeCount > 0) {{-- {{ $parentBadgeCount }} --}} @endif @if (count($visibleSubRoutes) > 0)
    {{ __($item['title']) }}
    @foreach ($visibleSubRoutes as $srKey => $subRoute) @php if (is_array($subRoute)) { $routeName = $subRoute['route'] ?? array_values($subRoute)[0]; $routeParams = $subRoute['params'] ?? (is_array($subRoute) ? $subRoute : []); $subBadgeKey = $subRoute['badge_key'] ?? null; } else { $routeName = $subRoute; $routeParams = []; $subBadgeKey = null; } $isSubActive = isset($subRoute) && isset($sub_page) && $subRoute['sub_active'] === $sub_page; $subBadgeCount = !empty($subBadgeKey) ? $badgeCounts[$subBadgeKey] ?? 0 : 0; @endphp {{ __($subRoute['sub_title']) }} @if ($subBadgeCount > 0) @endif @endforeach
    @endif @else @php $singleBadgeKey = $item['badge_key'] ?? $key; $singleBadgeCount = !empty($singleBadgeKey) ? $badgeCounts[$singleBadgeKey] ?? 0 : 0; @endphp @if ($singleBadgeCount > 0) @endif {{ __($item['title']) }} @if ($singleBadgeCount > 0) @endif @endif
  • @endforeach
V{{ Setting::getCurrentVersion() }}
V{{ Setting::getCurrentVersion() }}