Finish front end tests

This commit is contained in:
2024-10-07 13:45:42 -05:00
parent a2bb8023c9
commit 9f7d142ff4
34 changed files with 854 additions and 69 deletions

View File

@@ -3,27 +3,20 @@ import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
import { logout } from "~/server/functions";
import { middleware } from "~/middleware";
import jwt from "jsonwebtoken";
export const POST = async (request: NextRequest) => {
const middlewareResponse = await middleware(request);
if (middlewareResponse) return middlewareResponse;
try {
const { token } = await request.json() as { token: string };
if (!token)
return NextResponse.json({ message: "Token is required" },{ status: 400 });
const { refreshToken } = await request.json() as { refreshToken: string };
if (!refreshToken)
return NextResponse.json({ message: "Refresh token is required" }, { status: 400 });
try {
const decoded = jwt.verify(token, process.env.JWT_SECRET!) as { userId: number };
if (!decoded.userId)
throw new Error("Invalid token");
await logout(decoded.userId);
return NextResponse.json({ message: "Logged out successfully" });
} catch (jwtError) {
return NextResponse.json({ message: "Invalid token", error: jwtError }, { status: 400 });
}
await logout(refreshToken);
return NextResponse.json({ message: "Logged out successfully" });
} catch (error) {
console.error('Logout error:', error);
if (error instanceof Error)
return NextResponse.json({ message: error.message }, { status: 400 });
else