I have used middleware.ts file in Next.js to persist login but I am getting there errors:
○ Compiling /src/middleware ...
⨯ node:stream
Module build failed: UnhandledSchemeError: Reading from "node:stream" is not handled by plugins (Unhandled scheme).
Webpack supports "data:" and "file:" URIs by default.
You may need an additional plugin to handle "node:" URIs.
Import trace for requested module:
node:stream
./node_modules/firebase-admin/node_modules/@fastify/busboy/lib/main.js
./node_modules/firebase-admin/lib/utils/api-request.js
./node_modules/firebase-admin/lib/auth/auth-api-request.js
./node_modules/firebase-admin/lib/auth/auth.js
./node_modules/firebase-admin/lib/auth/index.js
./node_modules/firebase-admin/lib/esm/auth/index.js
Here is my middleware.ts
import { NextRequest, NextResponse } from "next/server";
import { getAuth } from "firebase-admin/auth";
export async function middleware(req: NextRequest) {
const sessionCookie = req.cookies.get("session")?.value;
if (!sessionCookie) {
return NextResponse.redirect(new URL("/login", req.url));
}
try {
await getAuth().verifySessionCookie(sessionCookie, true);
return NextResponse.next();
} catch (error) {
console.error("Failed to verify session cookie", error);
// Redirect to login on failure
return NextResponse.redirect(new URL("/login", req.url));
}
}
// Apply middleware to specific routes
export const config = {
matcher: ["/", "/admin"],
};