feat: Remove hardcoded /gatekeeper base path, update image paths, and introduce configurable base URL and cookie domain for improved routing and session management.
This commit is contained in:
@@ -2,7 +2,7 @@ import mintelNextConfig from "@mintel/next-config";
|
|||||||
import { NextConfig } from "next";
|
import { NextConfig } from "next";
|
||||||
|
|
||||||
const nextConfig: NextConfig = {
|
const nextConfig: NextConfig = {
|
||||||
basePath: "/gatekeeper",
|
// Gatekeeper specific overrides
|
||||||
};
|
};
|
||||||
|
|
||||||
export default mintelNextConfig(nextConfig);
|
export default mintelNextConfig(nextConfig);
|
||||||
|
|||||||
@@ -19,7 +19,11 @@ export async function GET(req: NextRequest) {
|
|||||||
req.headers.get("x-forwarded-host") || req.headers.get("host") || "";
|
req.headers.get("x-forwarded-host") || req.headers.get("host") || "";
|
||||||
const proto = req.headers.get("x-forwarded-proto") || "https";
|
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);
|
return NextResponse.redirect(loginUrl);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ export default async function LoginPage({ searchParams }: LoginPageProps) {
|
|||||||
const authCookieName =
|
const authCookieName =
|
||||||
process.env.AUTH_COOKIE_NAME || "mintel_gatekeeper_session";
|
process.env.AUTH_COOKIE_NAME || "mintel_gatekeeper_session";
|
||||||
const targetRedirect = formData.get("redirect") as string;
|
const targetRedirect = formData.get("redirect") as string;
|
||||||
|
const cookieDomain = process.env.COOKIE_DOMAIN;
|
||||||
|
|
||||||
if (password === expectedPassword) {
|
if (password === expectedPassword) {
|
||||||
const cookieStore = await cookies();
|
const cookieStore = await cookies();
|
||||||
@@ -31,6 +32,7 @@ export default async function LoginPage({ searchParams }: LoginPageProps) {
|
|||||||
path: "/",
|
path: "/",
|
||||||
maxAge: 30 * 24 * 60 * 60, // 30 days
|
maxAge: 30 * 24 * 60 * 60, // 30 days
|
||||||
sameSite: "lax",
|
sameSite: "lax",
|
||||||
|
...(cookieDomain ? { domain: cookieDomain } : {}),
|
||||||
});
|
});
|
||||||
redirect(targetRedirect);
|
redirect(targetRedirect);
|
||||||
} else {
|
} else {
|
||||||
@@ -55,7 +57,7 @@ export default async function LoginPage({ searchParams }: LoginPageProps) {
|
|||||||
<div className="flex justify-center">
|
<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">
|
<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
|
<Image
|
||||||
src="/gatekeeper/icon-white.svg"
|
src="/icon-white.svg"
|
||||||
alt="Mintel"
|
alt="Mintel"
|
||||||
width={32}
|
width={32}
|
||||||
height={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="h-px w-8 bg-slate-100" />
|
||||||
<div className="opacity-80 transition-opacity hover:opacity-100">
|
<div className="opacity-80 transition-opacity hover:opacity-100">
|
||||||
<Image
|
<Image
|
||||||
src="/gatekeeper/logo-black.svg"
|
src="/logo-black.svg"
|
||||||
alt={projectName}
|
alt={projectName}
|
||||||
width={140}
|
width={140}
|
||||||
height={40}
|
height={40}
|
||||||
|
|||||||
Reference in New Issue
Block a user