48 lines
1.4 KiB
TypeScript
Raw Normal View History

2025-05-19 13:11:02 +01:00
import { NextResponse } from "next/server";
import { cookies } from "next/headers";
import { env } from "@utils/env";
import { PrismaClient } from "@prisma/client";
import { verifyJwt } from "@utils/verifyJwt";
const prisma = new PrismaClient();
export async function POST(req: Request) {
let cookieStore;
try {
cookieStore = await cookies();
const token = cookieStore.get("jwt")?.value;
if (!token) return NextResponse.json({ error: "No JWT found" }, { status: 401 });
2025-05-19 13:11:02 +01:00
const payload = await verifyJwt({ token, secret: env.JWT_SECRET_KEY });
const user = await prisma.user.findUnique({
where: { id: payload.userId },
include: {
scientist: {
include: {
earthquakes: true,
observatories: true,
artefacts: true,
superior: true,
subordinates: true,
},
},
purchasedArtefacts: true,
},
});
if (user) {
return NextResponse.json({ message: "Got user successfully", user }, { status: 200 });
} else {
cookieStore.delete("jwt"); // Delete JWT cookie if user not found }
return NextResponse.json({ message: "Failed to get user" }, { status: 401 });
}
} catch (error) {
console.error("Error in user endpoint:", error);
cookieStore?.delete("jwt"); // Delete JWT cookie on error
return NextResponse.json({ message: "Internal Server Error" }, { status: 500 });
} finally {
await prisma.$disconnect();
}
}