import { notFound, redirect } from "next/navigation"; import { WizardInterface } from "~/components/trials/wizard/WizardInterface"; import { auth } from "~/server/auth"; import { api } from "~/trpc/server"; interface WizardPageProps { params: Promise<{ trialId: string; }>; } export default async function WizardPage({ params }: WizardPageProps) { const session = await auth(); if (!session) { redirect("/auth/signin"); } // Check if user has wizard/researcher permissions const userRole = session.user.roles?.[0]?.role; if ( !userRole || !["wizard", "researcher", "administrator"].includes(userRole) ) { redirect("/trials?error=insufficient_permissions"); } const { trialId } = await params; let trial; try { trial = await api.trials.get({ id: trialId }); } catch (_error) { notFound(); } // Only allow wizard interface for scheduled or in-progress trials if (!["scheduled", "in_progress"].includes(trial.status)) { redirect(`/trials/${trialId}?error=trial_not_active`); } return (
{trial.experiment.name} • Participant:{" "} {trial.participant.participantCode}