Scrum4Me/app/(app)/solo/page.tsx
janpeter visser 12d81a172f feat(ST-903): load active product in layout, replace cookie with DB lookup in solo
- layout.tsx: fetch active_product_id, resolve product, clear stale ref server-side
- NavBar: add activeProduct prop (rendering changes in ST-904)
- solo/page.tsx: redirect via user.active_product_id instead of lastProductId cookie
- proxy.ts: remove lastProductId cookie logic
- lib/cookies.ts: deleted (no longer used)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 19:04:02 +02:00

31 lines
1 KiB
TypeScript

import { redirect } from 'next/navigation'
import { getSession } from '@/lib/auth'
import { productAccessFilter } from '@/lib/product-access'
import { prisma } from '@/lib/prisma'
import { ProductPicker } from '@/components/solo/product-picker'
export default async function SoloPage() {
const session = await getSession()
if (!session.userId) redirect('/login')
const user = await prisma.user.findUnique({
where: { id: session.userId },
select: { active_product_id: true },
})
if (user?.active_product_id) {
const product = await prisma.product.findFirst({
where: { id: user.active_product_id, archived: false, ...productAccessFilter(session.userId) },
select: { id: true },
})
if (product) redirect(`/products/${user.active_product_id}/solo`)
}
const products = await prisma.product.findMany({
where: { archived: false, ...productAccessFilter(session.userId) },
orderBy: { created_at: 'desc' },
select: { id: true, name: true, description: true },
})
return <ProductPicker products={products} />
}