From 479cc697b7e6769dbf6c190e8b93dd8bfb8536b4 Mon Sep 17 00:00:00 2001 From: headlesdev Date: Sat, 17 May 2025 15:14:24 +0200 Subject: [PATCH] User Validation Route --- app/api/user/validate/route.ts | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 app/api/user/validate/route.ts diff --git a/app/api/user/validate/route.ts b/app/api/user/validate/route.ts new file mode 100644 index 0000000..801624a --- /dev/null +++ b/app/api/user/validate/route.ts @@ -0,0 +1,38 @@ +import { NextRequest, NextResponse } from "next/server"; +import jwt from 'jsonwebtoken'; +import prisma from "@/app/prisma"; + +interface Body { + token: string; +} + +export async function POST(request: NextRequest) { + try { + const body: Body = await request.json(); + + if (!body.token) { + return NextResponse.json({ error: "Missing required fields" }, { status: 400 }); + } + + if(!process.env.JWT_SECRET) { + return NextResponse.json({ error: "No JWT secret found" }, { status: 500 }); + } + + const decoded = jwt.verify(body.token, process.env.JWT_SECRET) as { id: string }; + + const user = await prisma.user.findUnique({ + where: { + id: decoded.id, + }, + }); + + if (!user) { + return NextResponse.json({ error: "User not found" }, { status: 404 }); + } + + return NextResponse.json({ message: "Valid" }, { status: 200 }); + + } catch (error: any) { + return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }); + } +}