in packages/better-auth/src/cookies/index.ts [15:63]
export function createCookieGetter(options: BetterAuthOptions) {
const secure =
options.advanced?.useSecureCookies !== undefined
? options.advanced?.useSecureCookies
: options.baseURL !== undefined
? options.baseURL.startsWith("https://")
? true
: false
: isProduction;
const secureCookiePrefix = secure ? "__Secure-" : "";
const crossSubdomainEnabled =
!!options.advanced?.crossSubDomainCookies?.enabled;
const domain = crossSubdomainEnabled
? options.advanced?.crossSubDomainCookies?.domain ||
(options.baseURL ? new URL(options.baseURL).hostname : undefined)
: undefined;
if (crossSubdomainEnabled && !domain) {
throw new BetterAuthError(
"baseURL is required when crossSubdomainCookies are enabled",
);
}
function createCookie(
cookieName: string,
overrideAttributes: Partial<CookieOptions> = {},
) {
const prefix = options.advanced?.cookiePrefix || "better-auth";
const name =
options.advanced?.cookies?.[cookieName as "session_token"]?.name ||
`${prefix}.${cookieName}`;
const attributes =
options.advanced?.cookies?.[cookieName as "session_token"]?.attributes;
return {
name: `${secureCookiePrefix}${name}`,
attributes: {
secure: !!secureCookiePrefix,
sameSite: "lax",
path: "/",
httpOnly: true,
...(crossSubdomainEnabled ? { domain } : {}),
...options.advanced?.defaultCookieAttributes,
...overrideAttributes,
...attributes,
} as CookieOptions,
};
}
return createCookie;
}