IKHSAN
EN Read in EnglishID

homeio

Publik

Fork dari doctor-io/homeio

Branch
main
Commit terakhir
958d74616 Oktober 2026

session.ts

Buka raw
export const AUTH_SESSION_COOKIE_NAME = "homeio_session";

export type SessionTokenParts = {
  payload: string;
  sessionId: string;
  expiresAtEpochSeconds: number;
  signature: string;
};

export function buildSessionPayload(
  sessionId: string,
  expiresAtEpochSeconds: number,
) {
  return `${sessionId}.${expiresAtEpochSeconds}`;
}

export function parseSessionToken(token: string): SessionTokenParts | null {
  const parts = token.split(".");
  if (parts.length !== 3) return null;

  const [sessionId, expiresAtRaw, signature] = parts;
  const expiresAtEpochSeconds = Number(expiresAtRaw);

  if (!sessionId || !Number.isFinite(expiresAtEpochSeconds) || !signature) {
    return null;
  }

  return {
    payload: buildSessionPayload(sessionId, expiresAtEpochSeconds),
    sessionId,
    expiresAtEpochSeconds,
    signature,
  };
}

export function isSessionExpired(expiresAtEpochSeconds: number) {
  return Date.now() >= expiresAtEpochSeconds * 1000;
}
byte
963
baris
39
Jenis
ts
Commit terakhir
16 Oktober 2026