More stuff
This commit is contained in:
32
src/app/api/users/logout/route.ts
Normal file
32
src/app/api/users/logout/route.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
"use server";
|
||||
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 = 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 });
|
||||
|
||||
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 });
|
||||
}
|
||||
} catch (error) {
|
||||
if (error instanceof Error)
|
||||
return NextResponse.json({ message: error.message }, { status: 400 });
|
||||
else
|
||||
return NextResponse.json({ message: "Unknown error occurred" }, { status: 500 });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user