4aa47ca61d
New accounts land on a 3-step wizard after signup — welcome, dietary preferences & allergens, notification opt-in — skippable at every step, shown once via a users.onboardingCompletedAt gate in the (app) layout. Existing accounts are backfilled as already-onboarded. Also gives the allergen-preferences step a real write path: user_allergens previously only had a GDPR-export read. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
24 lines
744 B
TypeScript
24 lines
744 B
TypeScript
import { headers } from "next/headers";
|
|
import { redirect } from "next/navigation";
|
|
import { Nav } from "@/components/layout/nav";
|
|
import { auth } from "@/lib/auth/server";
|
|
import { db, users, eq } from "@epicure/db";
|
|
|
|
export default async function AppLayout({ children }: { children: React.ReactNode }) {
|
|
const session = await auth.api.getSession({ headers: await headers() });
|
|
if (session) {
|
|
const dbUser = await db.query.users.findFirst({
|
|
where: eq(users.id, session.user.id),
|
|
columns: { onboardingCompletedAt: true },
|
|
});
|
|
if (!dbUser?.onboardingCompletedAt) redirect("/onboarding");
|
|
}
|
|
|
|
return (
|
|
<>
|
|
<Nav />
|
|
<main className="flex-1 container mx-auto px-4 py-8">{children}</main>
|
|
</>
|
|
);
|
|
}
|