35 lines
1011 B
TypeScript
35 lines
1011 B
TypeScript
import { NextResponse } from "next/server";
|
|
import type { NextRequest } from "next/server";
|
|
|
|
const SESSION_COOKIE_NAME = "mission_control_session";
|
|
|
|
// Public routes that don't require authentication
|
|
const publicRoutes = ["/login", "/reset-password"];
|
|
|
|
export async function middleware(request: NextRequest) {
|
|
const { pathname } = request.nextUrl;
|
|
|
|
// Allow public routes
|
|
if (publicRoutes.some(route => pathname.startsWith(route))) {
|
|
return NextResponse.next();
|
|
}
|
|
|
|
// Check for session cookie
|
|
const sessionToken = request.cookies.get(SESSION_COOKIE_NAME)?.value;
|
|
|
|
if (!sessionToken) {
|
|
// Redirect to login if no session
|
|
const loginUrl = new URL("/login", request.url);
|
|
return NextResponse.redirect(loginUrl);
|
|
}
|
|
|
|
// Session exists, allow the request
|
|
return NextResponse.next();
|
|
}
|
|
|
|
export const config = {
|
|
matcher: [
|
|
// Match all routes except static files, api routes, and Next.js internals
|
|
"/((?!_next/static|_next/image|favicon.ico|api/|.*\\.).*)",
|
|
],
|
|
}; |