/** * 域名与根域配置 - 特色标识 * 更换域名(如 *.hackrobot.cn -> *.nomadro.com)时,只需设置 ROOT_DOMAIN 或各独立变量 * * 环境变量: * - ROOT_DOMAIN: 根域名,如 nomadro.com,用于推导 Cookie、API 等默认值 * - AUTH_COOKIE_DOMAIN: Cookie 根域,如 .nomadro.com(优先于 ROOT_DOMAIN) * - PAYMENT_API_URL: 支付 API 地址 * - NEXT_PUBLIC_POCKETBASE_URL: PocketBase 地址 * - NEXT_PUBLIC_SITE_URL: 站点根地址 */ const isDev = process.env.NODE_ENV === "development"; /** 根域名,用于推导默认值。如 nomadro.com、hackrobot.cn */ export const ROOT_DOMAIN = process.env.ROOT_DOMAIN || process.env.NEXT_PUBLIC_ROOT_DOMAIN || "hackrobot.cn"; /** Cookie 根域,SSO 跨站登录用。如 .nomadro.com、.hackrobot.cn */ export const AUTH_COOKIE_DOMAIN = process.env.AUTH_COOKIE_DOMAIN || `.${ROOT_DOMAIN}`; /** 根据请求 host 返回 Cookie domain。localhost 时不设 domain,生产环境用根域实现跨站 SSO */ export function getAuthCookieDomain(request: { headers: { get: (name: string) => string | null } }): string | undefined { const envDomain = process.env.AUTH_COOKIE_DOMAIN; if (envDomain) return envDomain; const host = request.headers.get("host") ?? ""; if (host.includes("localhost") || host.startsWith("127.0.0.1")) return undefined; return AUTH_COOKIE_DOMAIN; } /** 支付 API 默认地址 */ export const DEFAULT_PAYMENT_API_URL = isDev ? "http://127.0.0.1:8700" : `https://api.${ROOT_DOMAIN}`; /** PocketBase 默认地址 */ export const DEFAULT_POCKETBASE_URL = `https://pocketbase.${ROOT_DOMAIN}`; /** 站点根地址默认值 */ export const DEFAULT_SITE_URL = isDev ? "http://localhost:3001" : `https://${ROOT_DOMAIN}`; /** MinIO 端点默认主机 */ export const DEFAULT_MINIO_HOST = `minioweb.${ROOT_DOMAIN}`;