mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-20 12:19:06 +00:00
* 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>
47 lines
1.2 KiB
TypeScript
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;
|
|
},
|
|
},
|
|
},
|
|
);
|