/** * Cookie utilities for cross-subdomain token storage */ import { getCookieDomain } from './domain'; /** * Set a cookie with domain attribute for cross-subdomain access * Dynamically determines the correct domain based on current environment */ export const setCookie = (name: string, value: string, days: number = 7) => { const expires = new Date(); expires.setTime(expires.getTime() + days * 24 * 60 * 60 * 1000); // Get cookie domain dynamically (.lvh.me in dev, .smoothschedule.com in prod, localhost for localhost) const cookieDomain = getCookieDomain(); const domainAttr = cookieDomain === 'localhost' ? '' : `;domain=${cookieDomain}`; document.cookie = `${name}=${value};expires=${expires.toUTCString()}${domainAttr};path=/;SameSite=Lax`; }; /** * Get a cookie value by name */ export const getCookie = (name: string): string | null => { const nameEQ = name + '='; const ca = document.cookie.split(';'); for (let i = 0; i < ca.length; i++) { let c = ca[i]; while (c.charAt(0) === ' ') c = c.substring(1, c.length); if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length); } return null; }; /** * Delete a cookie */ export const deleteCookie = (name: string) => { const cookieDomain = getCookieDomain(); const domainAttr = cookieDomain === 'localhost' ? '' : `;domain=${cookieDomain}`; document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:00 UTC${domainAttr};path=/;`; };