From a1fb0e25a7ab524e710ca10ff9485c0eddd6242a Mon Sep 17 00:00:00 2001 From: David Gwilliam Date: Tue, 31 Mar 2026 00:21:02 -0700 Subject: [PATCH] fix: validate ID parsing in API routes and player pages for Prisma v7 --- src/app/api/tournaments/[id]/games/bulk/route.ts | 10 +++++++++- src/app/api/tournaments/[id]/participants/route.ts | 10 +++++++++- src/app/players/[id]/profile/page.tsx | 6 +++++- src/app/players/[id]/schedule/page.tsx | 6 +++++- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/app/api/tournaments/[id]/games/bulk/route.ts b/src/app/api/tournaments/[id]/games/bulk/route.ts index 841b710..bdd342a 100644 --- a/src/app/api/tournaments/[id]/games/bulk/route.ts +++ b/src/app/api/tournaments/[id]/games/bulk/route.ts @@ -11,7 +11,15 @@ export async function POST( { params }: { params: { id: string } } ) { try { - const tournamentId = parseInt(params.id); + const tournamentId = parseInt(params.id, 10); + + if (isNaN(tournamentId)) { + return NextResponse.json( + { error: "Invalid tournament ID" }, + { status: 400 } + ); + } + const body = await request.json(); const { games } = body; diff --git a/src/app/api/tournaments/[id]/participants/route.ts b/src/app/api/tournaments/[id]/participants/route.ts index 593c934..63c5292 100644 --- a/src/app/api/tournaments/[id]/participants/route.ts +++ b/src/app/api/tournaments/[id]/participants/route.ts @@ -7,7 +7,15 @@ export async function POST( { params }: { params: { id: string } } ) { try { - const tournamentId = parseInt(params.id); + const tournamentId = parseInt(params.id, 10); + + if (isNaN(tournamentId)) { + return NextResponse.json( + { error: "Invalid tournament ID" }, + { status: 400 } + ); + } + const body = await request.json(); const { playerIds } = body; diff --git a/src/app/players/[id]/profile/page.tsx b/src/app/players/[id]/profile/page.tsx index 6aa17b5..2422889 100644 --- a/src/app/players/[id]/profile/page.tsx +++ b/src/app/players/[id]/profile/page.tsx @@ -10,7 +10,11 @@ interface PageProps { } export default async function PlayerProfilePage({ params }: PageProps) { - const playerId = parseInt(params.id) + const playerId = parseInt(params.id, 10) + + if (isNaN(playerId)) { + notFound() + } const player = await prisma.player.findUnique({ where: { id: playerId }, diff --git a/src/app/players/[id]/schedule/page.tsx b/src/app/players/[id]/schedule/page.tsx index 95b9449..8548000 100644 --- a/src/app/players/[id]/schedule/page.tsx +++ b/src/app/players/[id]/schedule/page.tsx @@ -10,7 +10,11 @@ interface PageProps { } export default async function PlayerSchedulePage({ params }: PageProps) { - const playerId = parseInt(params.id) + const playerId = parseInt(params.id, 10) + + if (isNaN(playerId)) { + notFound() + } const player = await prisma.player.findUnique({ where: { id: playerId },