Files
reflector/www/middleware.ts
Igor Monadical 369ecdff13 feat: replace nextjs-config with environment variables (#632)
* chore: remove nextjs-config

* build fix

* update readme

* explicit nextjs env vars + remove feature-unrelated things and obsolete vars from config

* full config removal

* remove force-dynamic from pages

* compile fix

* restore claude-deleted tests

* better .env.example

---------

Co-authored-by: Igor Loskutov <igor.loskutoff@gmail.com>
2025-09-11 11:20:41 -04:00

47 lines
1.2 KiB
TypeScript

import { withAuth } from "next-auth/middleware";
import { featureEnabled } from "./app/lib/features";
import { NextResponse } from "next/server";
import { PROTECTED_PAGES } from "./app/lib/auth";
export const config = {
matcher: [
"/((?!api|_next/static|_next/image|favicon.ico|sitemap.xml|robots.txt).*)",
// must be a copy of LOGIN_REQUIRED_PAGES
// cannot use anything dynamic (...LOGIN_REQUIRED_PAGES, or .concat(LOGIN_REQUIRED_PAGES))
// as per https://nextjs.org/docs/messages/invalid-page-config
"/",
"/transcripts(.*)",
"/browse(.*)",
"/rooms(.*)",
],
};
export default withAuth(
async function middleware(request) {
const pathname = request.nextUrl.pathname;
// feature-flags protected paths
if (
(!featureEnabled("browse") && pathname.startsWith("/browse")) ||
(!featureEnabled("rooms") && pathname.startsWith("/rooms"))
) {
return NextResponse.redirect(request.nextUrl.origin);
}
},
{
callbacks: {
async authorized({ req, token }) {
if (
featureEnabled("requireLogin") &&
PROTECTED_PAGES.test(req.nextUrl.pathname)
) {
return !!token;
}
return true;
},
},
},
);