import { NextRequest, NextResponse } from "next/server"; import { ApiResponse } from "./hooks/use-api"; import { API_URL } from "./lib/constants"; import IUser from "./interfaces/IUser"; export async function middleware(request: NextRequest) { const sessionCookie = request.cookies.get("auth_token")?.value; if (!sessionCookie) { return NextResponse.redirect( new URL( `/login?redirectTo=${encodeURIComponent(request.url)}`, request.url, ), ); } try { const res = await fetch(`${API_URL}/users/me`, { headers: { Authorization: `Bearer ${sessionCookie}` }, }); const js: ApiResponse = await res.json(); if (js.status === "Error") return NextResponse.redirect( new URL( `/login?redirectTo=${encodeURIComponent(request.url)}`, request.url, ), ); } catch (e: any) { return NextResponse.redirect( new URL( `/login?redirectTo=${encodeURIComponent(request.url)}`, request.url, ), ); } return NextResponse.next(); } export const config = { matcher: ["/dashboard/:path*"], };