ai-chatbot/app/(auth)/auth.config.ts
Your Name 565e29c74f
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled
fix(auth): avoid cookie domain on IP hosts
2026-02-14 01:13:56 +08:00

52 lines
1.5 KiB
TypeScript

import type { NextAuthConfig } from "next-auth";
import { isIP } from "node:net";
export function buildAuthConfig(authUrl?: string | null): NextAuthConfig {
const resolvedAuthUrl = authUrl || process.env.AUTH_URL || "";
const isSecure = resolvedAuthUrl.startsWith("https://");
const hostName = resolvedAuthUrl ? new URL(resolvedAuthUrl).hostname : undefined;
// Browsers may reject `Domain` cookies for IP hosts; keep them host-only in that case.
const cookieDomain =
hostName && hostName !== "localhost" && isIP(hostName) === 0 ? hostName : undefined;
return {
trustHost: true,
pages: {
signIn: "/login",
newUser: "/",
},
cookies: {
sessionToken: {
name: isSecure ? "__Secure-authjs.session-token" : "authjs.session-token",
options: {
httpOnly: true,
sameSite: "lax",
path: "/",
secure: isSecure,
domain: cookieDomain,
},
},
callbackUrl: {
name: isSecure ? "__Secure-authjs.callback-url" : "authjs.callback-url",
options: {
sameSite: "lax",
path: "/",
secure: isSecure,
domain: cookieDomain,
},
},
csrfToken: {
name: isSecure ? "__Host-authjs.csrf-token" : "authjs.csrf-token",
options: {
httpOnly: true,
sameSite: "lax",
path: "/",
secure: isSecure,
},
},
},
providers: [],
callbacks: {},
};
}