26 lines
793 B
TypeScript
26 lines
793 B
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
|
|
import { jwtVerify } from "jose";
|
|
import { verifyJwt } from "@utils/verifyJwt";
|
|
|
|
export async function middleware(req: NextRequest) {
|
|
const token = req.cookies.get("jwt")?.value;
|
|
if (!token) return NextResponse.redirect(new URL("/", req.url));
|
|
|
|
const secret = process.env.JWT_SECRET_KEY;
|
|
if (!secret) return NextResponse.json({ message: "Internal Server Error" }, { status: 500 });
|
|
|
|
try {
|
|
const payload = await verifyJwt({ token, secret });
|
|
const response = NextResponse.next();
|
|
response.headers.set("user", JSON.stringify(payload));
|
|
return response;
|
|
} catch (err) {
|
|
return NextResponse.json({ error: "Invalid token" }, { status: 401 });
|
|
}
|
|
}
|
|
|
|
export const config = {
|
|
matcher: ["/warehouse", "/profile", "/admin"],
|
|
};
|