File size: 747 Bytes
69698fb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
export const ADMIN_COOKIE = "admin_session";
export const SESSION_MAX_AGE = 60 * 60 * 12;

function attributes(isHttps: boolean, maxAge: number) {
  const parts = [`Path=/`, `Max-Age=${maxAge}`, "HttpOnly"];
  if (isHttps) {
    parts.push("Secure", "SameSite=None", "Partitioned");
  } else {
    parts.push("SameSite=Lax");
  }
  return parts.join("; ");
}

export function setAdminSessionCookie(headers: Headers, value: string, isHttps: boolean) {
  headers.append(
    "set-cookie",
    `${ADMIN_COOKIE}=${encodeURIComponent(value)}; ${attributes(isHttps, SESSION_MAX_AGE)}`
  );
}

export function clearAdminSessionCookie(headers: Headers, isHttps: boolean) {
  headers.append("set-cookie", `${ADMIN_COOKIE}=; ${attributes(isHttps, 0)}`);
}