From 762318f461310c233a9a5ec41545a44a4c33e667 Mon Sep 17 00:00:00 2001 From: chenyuan Date: Tue, 8 Sep 2026 11:08:11 +0800 Subject: [PATCH] fix: share auth cookies with BI subdomain --- src/utils/auth.js | 56 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/src/utils/auth.js b/src/utils/auth.js index 55a041a..60ebf5c 100644 --- a/src/utils/auth.js +++ b/src/utils/auth.js @@ -1,28 +1,56 @@ import Cookies from "js-cookie"; import { clearStudentDemoSession, getStudentDemoSession, isStudentDemo } from "@/utils/studentDemo"; -const TokenKey = "Admin-Token"; -const user = "UserInfo"; +const TokenKey = "Admin-Token"; +const user = "UserInfo"; +const SharedCookieDomain = ".sztzjy.com"; + +function isSharedCookieHost() { + if (typeof window === "undefined") return false; + const hostname = window.location.hostname.toLowerCase(); + return hostname === "sztzjy.com" || hostname.endsWith(SharedCookieDomain); +} + +function getAuthCookieOptions() { + if (!isSharedCookieHost()) return { path: "/" }; + return { + domain: SharedCookieDomain, + path: "/", + secure: true, + sameSite: "Lax", + }; +} + +function setAuthCookie(name, value) { + if (isSharedCookieHost()) Cookies.remove(name, { path: "/" }); + return Cookies.set(name, value, getAuthCookieOptions()); +} + +function removeAuthCookie(name) { + Cookies.remove(name, { path: "/" }); + if (isSharedCookieHost()) Cookies.remove(name, getAuthCookieOptions()); +} + export function getToken() { return getStudentDemoSession()?.token || Cookies.get(TokenKey); -} - -export function setToken(token) { - return Cookies.set(TokenKey, token); -} - +} + +export function setToken(token) { + return setAuthCookie(TokenKey, token); +} + export function removeToken() { if (isStudentDemo()) return clearStudentDemoSession(); - return Cookies.remove(TokenKey); -} -export function setUserInfo(userinfo) { - return Cookies.set(user, userinfo); -} + return removeAuthCookie(TokenKey); +} +export function setUserInfo(userinfo) { + return setAuthCookie(user, userinfo); +} export function getUserInfo() { const demo = getStudentDemoSession(); return demo?.userInfo ? JSON.stringify(demo.userInfo) : Cookies.get(user); } export function removeUserInfo() { if (isStudentDemo()) return clearStudentDemoSession(); - return Cookies.remove(user); + return removeAuthCookie(user); }