diff --git a/src/app/(applicant)/layout.tsx b/src/app/(applicant)/layout.tsx index 81a9f6d..875947c 100644 --- a/src/app/(applicant)/layout.tsx +++ b/src/app/(applicant)/layout.tsx @@ -1,5 +1,6 @@ import { redirect } from 'next/navigation' -import { auth } from '@/lib/auth' +import { prisma } from '@/lib/prisma' +import { requireRole } from '@/lib/auth-redirect' import { ApplicantNav } from '@/components/layouts/applicant-nav' export const dynamic = 'force-dynamic' @@ -9,14 +10,20 @@ export default async function ApplicantLayout({ }: { children: React.ReactNode }) { - const session = await auth() + const session = await requireRole('APPLICANT') - if (!session?.user) { + // Check if user has completed onboarding + const user = await prisma.user.findUnique({ + where: { id: session.user.id }, + select: { onboardingCompletedAt: true }, + }) + + if (!user) { redirect('/login') } - if (session.user.role !== 'APPLICANT') { - redirect('/login') + if (!user.onboardingCompletedAt) { + redirect('/onboarding') } return ( diff --git a/src/app/(observer)/layout.tsx b/src/app/(observer)/layout.tsx index b10b63e..183b07c 100644 --- a/src/app/(observer)/layout.tsx +++ b/src/app/(observer)/layout.tsx @@ -1,7 +1,11 @@ +import { redirect } from 'next/navigation' +import { prisma } from '@/lib/prisma' import { requireRole } from '@/lib/auth-redirect' import { ObserverNav } from '@/components/layouts/observer-nav' import { EditionProvider } from '@/components/observer/observer-edition-context' +export const dynamic = 'force-dynamic' + export default async function ObserverLayout({ children, }: { @@ -9,6 +13,20 @@ export default async function ObserverLayout({ }) { const session = await requireRole('OBSERVER') + // Check if user has completed onboarding + const user = await prisma.user.findUnique({ + where: { id: session.user.id }, + select: { onboardingCompletedAt: true }, + }) + + if (!user) { + redirect('/login') + } + + if (!user.onboardingCompletedAt) { + redirect('/onboarding') + } + return (