mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-20 20:29:06 +00:00
Implement multi tenancy
This commit is contained in:
@@ -1,22 +1,50 @@
|
||||
import type { NextRequest } from "next/server";
|
||||
import { NextResponse, NextRequest } from "next/server";
|
||||
import { get } from "@vercel/edge-config";
|
||||
|
||||
import { fiefAuth } from "./app/lib/fief";
|
||||
import { FiefAuth, IUserInfoCache } from "@fief/fief/nextjs";
|
||||
import { getFiefAuth, getFiefAuthMiddleware } from "./app/lib/fief";
|
||||
|
||||
let protectedPath: any = [];
|
||||
if (process.env.NEXT_PUBLIC_FEAT_LOGIN_REQUIRED === "1") {
|
||||
protectedPath = [
|
||||
{
|
||||
matcher: "/transcripts/((?!new).*)",
|
||||
parameters: {},
|
||||
},
|
||||
{
|
||||
matcher: "/browse",
|
||||
parameters: {},
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
const authMiddleware = fiefAuth.middleware(protectedPath);
|
||||
export async function middleware(request: NextRequest) {
|
||||
return authMiddleware(request);
|
||||
const domain = request.nextUrl.hostname;
|
||||
const config = await get(domain);
|
||||
|
||||
if (!config) return NextResponse.error();
|
||||
|
||||
// Feature-flag protedted paths
|
||||
if (
|
||||
!config["features"]["browse"] &&
|
||||
request.nextUrl.pathname.startsWith("/browse")
|
||||
) {
|
||||
return NextResponse.redirect(request.nextUrl.origin);
|
||||
}
|
||||
|
||||
if (config["features"]["requireLogin"]) {
|
||||
const fiefMiddleware = await getFiefAuthMiddleware(request.nextUrl);
|
||||
const fiefResponse = fiefMiddleware(request);
|
||||
if (
|
||||
request.nextUrl.pathname == "/" ||
|
||||
request.nextUrl.pathname.startsWith("/transcripts") ||
|
||||
request.nextUrl.pathname.startsWith("/browse")
|
||||
) {
|
||||
// return fiefAuthMiddleware(domain, config['auth_callback_url'])(request, {rewrite: request.nextUrl.origin + "/" + domain + request.nextUrl.pathname})
|
||||
const response = NextResponse.rewrite(
|
||||
request.nextUrl.origin + "/" + domain + request.nextUrl.pathname,
|
||||
);
|
||||
// response = (await fiefResponse).headers
|
||||
return response;
|
||||
}
|
||||
return fiefResponse;
|
||||
}
|
||||
|
||||
if (
|
||||
request.nextUrl.pathname == "/" ||
|
||||
request.nextUrl.pathname.startsWith("/transcripts") ||
|
||||
request.nextUrl.pathname.startsWith("/browse")
|
||||
) {
|
||||
return NextResponse.rewrite(
|
||||
request.nextUrl.origin + "/" + domain + request.nextUrl.pathname,
|
||||
);
|
||||
}
|
||||
|
||||
return NextResponse.next();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user