import { NextRequest, NextResponse } from "next/server"; import { CLAIM_NAME, AUTH_USER_ID, PORT, PROXY_HOST, SERVER_API_URL, SITE_ID, } from "./src/shared/config"; const serverApiUrl = process.env.SERVER_API_URL; const serverApiUrl2 = process.env.NEXT_PUBLIC_SERVER_API_URL2 ?? serverApiUrl; const serverApiUrl3 = process.env.NEXT_PUBLIC_SERVER_API_URL3 ?? serverApiUrl; // const serverApiUrl4 = // process.env.NEXT_PUBLIC_SERVER_API_URL4 ?? serverApiUrl; const serverApiUrl5 = process.env.NEXT_PUBLIC_SERVER_API_URL5 ?? serverApiUrl; export function middleware(req: NextRequest) { const pathname = req.nextUrl.pathname; const searchParams = req.nextUrl.searchParams; const logMessages: string[] = [ `[Middleware Request] ${new Date().toISOString()}`, `[Environment]\n Mode: ${process.env.NODE_ENV}\n Port: ${PORT}\n Proxy Host: ${PROXY_HOST}\n Server API URL: ${SERVER_API_URL}\n Site ID: ${SITE_ID}`, `[Request]\n Original Pathname: ${pathname}`, ]; if (pathname.startsWith("/attach-service")) { const requestHeaders = new Headers(req.headers); const token = req.cookies.get(CLAIM_NAME)?.value; const userId = req.cookies.get(AUTH_USER_ID)?.value; const newUrl = `${serverApiUrl}${pathname}`; if (token) requestHeaders.set(CLAIM_NAME, token); if (userId) requestHeaders.set(AUTH_USER_ID, userId); logMessages.push(` Rewritten URL: ${newUrl}`); logMessages.push("\n--------------------------------\n"); // console.log(logMessages.join("\n")); return NextResponse.rewrite(new URL(newUrl), { headers: requestHeaders, }); } if (pathname.startsWith("/server/sewerage-service")) { const requestHeaders = new Headers(req.headers); const token = req.cookies.get(CLAIM_NAME)?.value; const userId = req.cookies.get(AUTH_USER_ID)?.value; // const decodedQuery = toDecodedQueryString(searchParams); const newUrl = `${serverApiUrl2}${pathname.replace("/server/", "/")}${searchParams ? `?${searchParams}` : ""}`; if (token) requestHeaders.set(CLAIM_NAME, token); if (userId) requestHeaders.set(AUTH_USER_ID, userId); logMessages.push(` Rewritten URL: ${newUrl}`); logMessages.push("\n--------------------------------\n"); console.log(logMessages.join("\n")); return NextResponse.rewrite(new URL(newUrl), { headers: requestHeaders, }); } if (pathname.startsWith("/reuse-service")) { const requestHeaders = new Headers(req.headers); const token = req.cookies.get(CLAIM_NAME)?.value; const userId = req.cookies.get(AUTH_USER_ID)?.value; const newUrl = `${serverApiUrl2}${pathname}`; if (token) requestHeaders.set(CLAIM_NAME, token); if (userId) requestHeaders.set(AUTH_USER_ID, userId); logMessages.push(` Rewritten URL: ${newUrl}`); logMessages.push("\n--------------------------------\n"); console.log(logMessages.join("\n")); return NextResponse.rewrite(new URL(newUrl), { headers: requestHeaders, }); } if (pathname.startsWith("/server/operation-service")) { const requestHeaders = new Headers(req.headers); const token = req.cookies.get(CLAIM_NAME)?.value; const userId = req.cookies.get(AUTH_USER_ID)?.value; // const newUrl = `${serverApiUrl2}${pathname.replace("/server/", "")}`; const newUrl = `${serverApiUrl2}${pathname.replace("/server/", "/")}${searchParams ? `?${searchParams}` : ""}`; if (token) requestHeaders.set(CLAIM_NAME, token); if (userId) requestHeaders.set(AUTH_USER_ID, userId); logMessages.push(` Rewritten URL: ${newUrl}`); logMessages.push("\n--------------------------------\n"); console.log(logMessages.join("\n")); return NextResponse.rewrite(new URL(newUrl), { headers: requestHeaders, }); } if (pathname.startsWith("/server/ic-service")) { const requestHeaders = new Headers(req.headers); const token = req.cookies.get(CLAIM_NAME)?.value; const userId = req.cookies.get(AUTH_USER_ID)?.value; const newUrl = `${serverApiUrl3}${pathname.replace("/server/", "/")}`; if (token) requestHeaders.set(CLAIM_NAME, token); if (userId) requestHeaders.set(AUTH_USER_ID, userId); logMessages.push(` Rewritten URL: ${newUrl}`); logMessages.push("\n--------------------------------\n"); console.log(logMessages.join("\n")); return NextResponse.rewrite(new URL(newUrl), { headers: requestHeaders, }); } if (pathname.startsWith("/server/dc-service")) { const requestHeaders = new Headers(req.headers); const token = req.cookies.get(CLAIM_NAME)?.value; const userId = req.cookies.get(AUTH_USER_ID)?.value; const newUrl = `${serverApiUrl3}${pathname.replace("/server/", "/")}${searchParams ? `?${searchParams}` : ""}`; if (token) requestHeaders.set(CLAIM_NAME, token); if (userId) requestHeaders.set(AUTH_USER_ID, userId); logMessages.push(` Rewritten URL: ${newUrl}`); logMessages.push("\n--------------------------------\n"); console.log(logMessages.join("\n")); return NextResponse.rewrite(new URL(newUrl), { headers: requestHeaders, }); } if (pathname.startsWith("/user-service")) { const queryParams = searchParams.toString(); const newUrl = `${serverApiUrl}${pathname}${ queryParams ? `?${queryParams}` : "" }`; logMessages.push(` User Service Rewritten URL: ${newUrl}`); logMessages.push("\n--------------------------------\n"); // console.log(logMessages.join("\n")); return NextResponse.rewrite(new URL(newUrl)); } if (pathname.startsWith("/server")) { const queryParams = searchParams.toString(); const newUrl = `${serverApiUrl}${pathname.replace("/server", "/")}${ queryParams ? `?${queryParams}` : "" }`; logMessages.push(` Rewritten URL: ${newUrl}`); logMessages.push("\n--------------------------------\n"); // console.log(logMessages.join("\n")); return NextResponse.rewrite(new URL(newUrl)); } if (pathname === "/") { return NextResponse.redirect(new URL("/dashboard", req.url)); } logMessages.push("\n--------------------------------\n"); console.log(logMessages.join("\n")); return NextResponse.next(); } export const config = { matcher: [ "/server/:path*", "/attach-service/:path*", "/user-service/:path*", "/sewerage-service/:path*", "/reuse-service/:path*", "/operation-service/:path*", "/", ], };