32 lines
1.0 KiB
TypeScript
32 lines
1.0 KiB
TypeScript
// /opt/erp-system/proxy.ts
|
|
import { NextResponse } from "next/server";
|
|
import type { NextRequest } from "next/server";
|
|
import { getToken } from "next-auth/jwt";
|
|
|
|
export default async function proxy(req: NextRequest) {
|
|
// Holt das Token aus dem Request
|
|
const token = await getToken({ req, secret: process.env.NEXTAUTH_SECRET });
|
|
const isAuthPage = req.nextUrl.pathname.startsWith("/login");
|
|
|
|
// Wenn der Nutzer auf der Login-Seite ist, aber schon eingeloggt -> ab zum Dashboard
|
|
if (isAuthPage) {
|
|
if (token) {
|
|
return NextResponse.redirect(new URL("/", req.url));
|
|
}
|
|
return NextResponse.next();
|
|
}
|
|
|
|
// Wenn der Nutzer nicht eingeloggt ist und versucht auf interne Seiten zuzugreifen -> zum Login
|
|
if (!token) {
|
|
return NextResponse.redirect(new URL("/login", req.url));
|
|
}
|
|
|
|
// Alles in Ordnung, Anfrage durchlassen
|
|
return NextResponse.next();
|
|
}
|
|
|
|
// Hier definieren wir, auf welchen Routen die Proxy/Middleware überhaupt laufen soll
|
|
export const config = {
|
|
matcher: ["/((?!api/auth|_next/static|_next/image|favicon.ico).*)"],
|
|
};
|