feat: Remove hardcoded /gatekeeper base path, update image paths, and introduce configurable base URL and cookie domain for improved routing and session management.
All checks were successful
Monorepo Pipeline / 🧪 Quality Assurance (push) Successful in 3m4s
Monorepo Pipeline / 🚀 Release (push) Successful in 3m3s
Monorepo Pipeline / 🐳 Build & Push Images (push) Successful in 5m18s

This commit is contained in:
2026-02-06 13:54:47 +01:00
parent 6229f8e886
commit 7f9206ae77
3 changed files with 10 additions and 4 deletions

View File

@@ -2,7 +2,7 @@ import mintelNextConfig from "@mintel/next-config";
import { NextConfig } from "next";
const nextConfig: NextConfig = {
basePath: "/gatekeeper",
// Gatekeeper specific overrides
};
export default mintelNextConfig(nextConfig);

View File

@@ -19,7 +19,11 @@ export async function GET(req: NextRequest) {
req.headers.get("x-forwarded-host") || req.headers.get("host") || "";
const proto = req.headers.get("x-forwarded-proto") || "https";
const loginUrl = `${proto}://${host}/gatekeeper/login?redirect=${encodeURIComponent(originalUrl)}`;
const gatekeeperUrl =
process.env.NEXT_PUBLIC_BASE_URL || `${proto}://gatekeeper.${host}`;
const absoluteOriginalUrl = `${proto}://${host}${originalUrl}`;
const loginUrl = `${gatekeeperUrl}/login?redirect=${encodeURIComponent(absoluteOriginalUrl)}`;
return NextResponse.redirect(loginUrl);
}

View File

@@ -22,6 +22,7 @@ export default async function LoginPage({ searchParams }: LoginPageProps) {
const authCookieName =
process.env.AUTH_COOKIE_NAME || "mintel_gatekeeper_session";
const targetRedirect = formData.get("redirect") as string;
const cookieDomain = process.env.COOKIE_DOMAIN;
if (password === expectedPassword) {
const cookieStore = await cookies();
@@ -31,6 +32,7 @@ export default async function LoginPage({ searchParams }: LoginPageProps) {
path: "/",
maxAge: 30 * 24 * 60 * 60, // 30 days
sameSite: "lax",
...(cookieDomain ? { domain: cookieDomain } : {}),
});
redirect(targetRedirect);
} else {
@@ -55,7 +57,7 @@ export default async function LoginPage({ searchParams }: LoginPageProps) {
<div className="flex justify-center">
<div className="w-16 h-16 bg-black rounded-xl flex items-center justify-center shadow-xl shadow-slate-100 hover:scale-105 transition-all duration-500 ease-[cubic-bezier(0.23,1,0.32,1)] rotate-2 hover:rotate-0">
<Image
src="/gatekeeper/icon-white.svg"
src="/icon-white.svg"
alt="Mintel"
width={32}
height={32}
@@ -112,7 +114,7 @@ export default async function LoginPage({ searchParams }: LoginPageProps) {
<div className="h-px w-8 bg-slate-100" />
<div className="opacity-80 transition-opacity hover:opacity-100">
<Image
src="/gatekeeper/logo-black.svg"
src="/logo-black.svg"
alt={projectName}
width={140}
height={40}