Files
CloudFlare-ImgBed/functions/utils/auth/sessionConfig.js
T

34 lines
1.0 KiB
JavaScript

const DEFAULT_SESSION_MAX_AGE_DAYS = 14;
const MAX_SESSION_MAX_AGE_DAYS = 3650;
const SECONDS_PER_DAY = 86400;
const MAX_KV_EXPIRATION_TTL = 2147483647;
/**
* Normalize persisted session max age to an integer day count.
* Values outside the expected day range are treated as invalid so timestamp
* values such as Date.now() do not become long-lived sessions.
*/
export function normalizeSessionMaxAgeDays(value) {
const days = typeof value === 'string' && value.trim() !== ''
? Number(value)
: value;
if (!Number.isFinite(days)) {
return DEFAULT_SESSION_MAX_AGE_DAYS;
}
const normalizedDays = Math.trunc(days);
if (normalizedDays < 1 || normalizedDays > MAX_SESSION_MAX_AGE_DAYS) {
return DEFAULT_SESSION_MAX_AGE_DAYS;
}
return normalizedDays;
}
export function sessionMaxAgeDaysToTtl(days) {
const normalizedDays = normalizeSessionMaxAgeDays(days);
const ttl = normalizedDays * SECONDS_PER_DAY;
return Math.min(ttl, MAX_KV_EXPIRATION_TTL);
}