Files
Speisekarte/proxy.ts
T
florian.wilde 32594c2dd8 Fix: Weiterleitungen übernehmen nicht mehr die Server-Bindung 0.0.0.0
Nach dem Abmelden landete man auf 0.0.0.0:3000, weil die absolute
Redirect-URL aus request.url gebaut wurde und dort seit der Bindung an
0.0.0.0 die Server-Adresse statt des aufgerufenen Hosts steht.
Logout leitet jetzt relativ weiter; der Proxy baut die URL aus dem
Host-Header des Browsers (inkl. x-forwarded-proto hinter Proxies).
2026-07-17 23:53:12 +02:00

50 lines
1.5 KiB
TypeScript

import { createServerClient } from "@supabase/ssr";
import { NextResponse, type NextRequest } from "next/server";
// Session-Refresh + Zugriffsschutz für die internen Bereiche.
export async function proxy(request: NextRequest) {
let response = NextResponse.next({ request });
const supabase = createServerClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
{
cookies: {
getAll() {
return request.cookies.getAll();
},
setAll(cookiesToSet) {
cookiesToSet.forEach(({ name, value }) =>
request.cookies.set(name, value)
);
response = NextResponse.next({ request });
cookiesToSet.forEach(({ name, value, options }) =>
response.cookies.set(name, value, options)
);
},
},
}
);
const {
data: { user },
} = await supabase.auth.getUser();
if (!user) {
// Absolute URL aus dem Host-Header des Browsers bauen: request.nextUrl
// trägt bei "-H 0.0.0.0" die Server-Bindung statt des aufgerufenen
// Hosts, und relative Location-Header lehnt die Middleware ab.
const host = request.headers.get("host") ?? request.nextUrl.host;
const proto =
request.headers.get("x-forwarded-proto") ??
request.nextUrl.protocol.replace(":", "");
return NextResponse.redirect(`${proto}://${host}/login`, 303);
}
return response;
}
export const config = {
matcher: ["/intern/:path*", "/admin/:path*", "/konto/:path*"],
};