fix: isolate auth cookies per deploy
This commit is contained in:
@@ -10,7 +10,7 @@ const AUTH_STATE_ROOT = path.join(
|
|||||||
);
|
);
|
||||||
const USERS_PATH = path.join(AUTH_STATE_ROOT, "users.json");
|
const USERS_PATH = path.join(AUTH_STATE_ROOT, "users.json");
|
||||||
const SESSIONS_PATH = path.join(AUTH_STATE_ROOT, "auth_sessions.json");
|
const SESSIONS_PATH = path.join(AUTH_STATE_ROOT, "auth_sessions.json");
|
||||||
const COOKIE_NAME = "claw_account_session";
|
const COOKIE_NAME = authCookieName();
|
||||||
const SESSION_MAX_AGE_SECONDS = 60 * 60 * 24 * 30;
|
const SESSION_MAX_AGE_SECONDS = 60 * 60 * 24 * 30;
|
||||||
const SESSION_REFRESH_INTERVAL_MS = 60 * 60 * 12 * 1000;
|
const SESSION_REFRESH_INTERVAL_MS = 60 * 60 * 12 * 1000;
|
||||||
const LINUX_ACCOUNT_WORKSPACE_NAME = "zk-agent";
|
const LINUX_ACCOUNT_WORKSPACE_NAME = "zk-agent";
|
||||||
@@ -303,6 +303,23 @@ function shouldRefreshSession(value?: string) {
|
|||||||
return Date.now() - timestamp > SESSION_REFRESH_INTERVAL_MS;
|
return Date.now() - timestamp > SESSION_REFRESH_INTERVAL_MS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function authCookieName() {
|
||||||
|
const explicit = sanitizeCookieNamePart(process.env.CLAW_AUTH_COOKIE_NAME);
|
||||||
|
if (explicit) return explicit;
|
||||||
|
const instance =
|
||||||
|
sanitizeCookieNamePart(process.env.CLAW_DEPLOY_INSTANCE) ||
|
||||||
|
sanitizeCookieNamePart(process.env.CLAW_SERVICE_SCOPE) ||
|
||||||
|
"local";
|
||||||
|
const port = sanitizeCookieNamePart(process.env.CLAW_FRONTEND_PORT) || "dev";
|
||||||
|
return `claw_account_session_${instance}_${port}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function sanitizeCookieNamePart(value?: string) {
|
||||||
|
const normalized = (value ?? "").trim().toLowerCase();
|
||||||
|
if (!normalized) return "";
|
||||||
|
return normalized.replace(/[^a-z0-9_-]+/g, "_").replace(/^_+|_+$/g, "");
|
||||||
|
}
|
||||||
|
|
||||||
function linuxAccountsEnabled() {
|
function linuxAccountsEnabled() {
|
||||||
return ["1", "true", "yes", "on"].includes(
|
return ["1", "true", "yes", "on"].includes(
|
||||||
(process.env.CLAW_ENABLE_LINUX_ACCOUNTS ?? "").trim().toLowerCase(),
|
(process.env.CLAW_ENABLE_LINUX_ACCOUNTS ?? "").trim().toLowerCase(),
|
||||||
|
|||||||
Reference in New Issue
Block a user