---
task: Fix public marketplace /list-products-market showing 0 products for unauthenticated users — POST /Market/Products/List has auth middleware but the page is public
cycles: 3
context: true
private: false
started: 2026-05-16T16:02:42Z
finished: 2026-05-16T16:03:15Z
---

## files
- routes/web.php [line ~412] — `POST /Market/Products/List` has `'middleware' => 'auth'` but the page is designed to be public
- app/Http/Controllers/Market/ProductController.php [lines 561-607] — `listProductsData()` already has guest-safe fallback logic but it's never reached due to auth middleware
- app/Http/Controllers/Support/VueRouteMap.php [line ~58] — `/list-products-market` has `loginRequired: false` (correctly public)

## steps
1. In `routes/web.php`, on the `POST /Market/Products/List` route, remove `'middleware' => 'auth'` (or change it to optional auth that attaches user if present but doesn't block guests).
   - The controller already handles the guest case: `else { $products = Product::where('is_active', true)->get(); }` on line ~605.
   - With auth middleware removed, `Auth::user()` returns null for guests → `$UltOpsSupOps = false` → falls through to the `else` branch showing all active products. This is the correct behaviour.
2. No changes needed to `ProductController::listProductsData()` — it already handles null user correctly.
3. Verify: after removing auth middleware, visiting `/list-products-market` without login shows the full active product catalog.

## context
Current state (confirmed by Playwright):
- `/list-products-market` loads (loginRequired: false ✓)
- Page calls `POST /Market/Products/List` → 401 Unauthenticated (auth middleware blocks guest)
- Page shows "0 Products — No products found" for guests even though products exist

Controller fallback code (line ~602-607) already written for guests:
```php
if ($targetStore) {
    $products = $targetStore->products()->where('prd_str.is_active', true)->get();
} elseif ($UltOpsSupOps) {
    $products = Product::select([...])->get();
} else {
    // THIS runs for guests (no store, no big-3 role) — but currently unreachable due to auth middleware
    $products = Product::where('is_active', true)->get();
}
```

Route fix (web.php):
```php
// BEFORE (blocks guests):
Route::post('/Market/Products/List', [
    'as'         => 'products.list.data',
    'uses'       => ProductController::class . '@listProductsData',
    'middleware' => 'auth',
]);

// AFTER (allows guests):
Route::post('/Market/Products/List', [
    'as'   => 'products.list.data',
    'uses' => ProductController::class . '@listProductsData',
]);
```

## notes
- dictionary: ai-docs/dictionary.md (products table = `prd_items`, product-store pivot = `prd_str`)
- linters: none
- constraints: The controller's `Auth::user()` returns null gracefully for guests in Hypervel — no additional null checks needed.
