From 248b543b025a39c0fe8aa18e29d7568ba47c0f47 Mon Sep 17 00:00:00 2001 From: peintnermax Date: Thu, 4 Apr 2024 10:23:20 +0200 Subject: [PATCH] cleanup sessions based on expiration date --- apps/login/lib/zitadel.ts | 32 +++++++------- apps/login/utils/cookies.ts | 88 +++++++++++++++++++------------------ 2 files changed, 61 insertions(+), 59 deletions(-) diff --git a/apps/login/lib/zitadel.ts b/apps/login/lib/zitadel.ts index 92739fd1f67..4bab7934e3c 100644 --- a/apps/login/lib/zitadel.ts +++ b/apps/login/lib/zitadel.ts @@ -130,10 +130,10 @@ export async function createSessionForLoginname( { checks: { user: { loginName }, password: { password } }, challenges, - // lifetime: { - // seconds: 300, - // nanos: 0, - // }, + lifetime: { + seconds: 300, + nanos: 0, + }, }, {} ) @@ -141,10 +141,10 @@ export async function createSessionForLoginname( { checks: { user: { loginName } }, challenges, - // lifetime: { - // seconds: 300, - // nanos: 0, - // }, + lifetime: { + seconds: 300, + nanos: 0, + }, }, {} ); @@ -162,10 +162,10 @@ export async function createSessionForUserId( { checks: { user: { userId }, password: { password } }, challenges, - // lifetime: { - // seconds: 300, - // nanos: 0, - // }, + lifetime: { + seconds: 300, + nanos: 0, + }, }, {} ) @@ -173,10 +173,10 @@ export async function createSessionForUserId( { checks: { user: { userId } }, challenges, - // lifetime: { - // seconds: 300, - // nanos: 0, - // }, + lifetime: { + seconds: 300, + nanos: 0, + }, }, {} ); diff --git a/apps/login/utils/cookies.ts b/apps/login/utils/cookies.ts index 3b1af54a52d..e05c124930d 100644 --- a/apps/login/utils/cookies.ts +++ b/apps/login/utils/cookies.ts @@ -45,15 +45,15 @@ export async function addSessionToCookie( currentSessions = [...currentSessions, session]; } - // if (cleanup) { - // const now = new Date(); - // const filteredSessions = currentSessions.filter( - // (session) => new Date(session.expirationDate) > now - // ); - // return setSessionHttpOnlyCookie(filteredSessions); - // } else { - return setSessionHttpOnlyCookie(currentSessions); - // } + if (cleanup) { + const now = new Date(); + const filteredSessions = currentSessions.filter((session) => + session.expirationDate ? new Date(session.expirationDate) > now : true + ); + return setSessionHttpOnlyCookie(filteredSessions); + } else { + return setSessionHttpOnlyCookie(currentSessions); + } } export async function updateSessionCookie( @@ -72,15 +72,15 @@ export async function updateSessionCookie( if (foundIndex > -1) { sessions[foundIndex] = session; - // if (cleanup) { - // const now = new Date(); - // const filteredSessions = sessions.filter( - // (session) => new Date(session.expirationDate) > now - // ); - // return setSessionHttpOnlyCookie(filteredSessions); - // } else { - return setSessionHttpOnlyCookie(sessions); - // } + if (cleanup) { + const now = new Date(); + const filteredSessions = sessions.filter((session) => + session.expirationDate ? new Date(session.expirationDate) > now : true + ); + return setSessionHttpOnlyCookie(filteredSessions); + } else { + return setSessionHttpOnlyCookie(sessions); + } } else { throw "updateSessionCookie: session id now found"; } @@ -98,15 +98,15 @@ export async function removeSessionFromCookie( : [session]; const reducedSessions = sessions.filter((s) => s.id !== session.id); - // if (cleanup) { - // const now = new Date(); - // const filteredSessions = reducedSessions.filter( - // (session) => new Date(session.expirationDate) > now - // ); - // return setSessionHttpOnlyCookie(filteredSessions); - // } else { - return setSessionHttpOnlyCookie(reducedSessions); - // } + if (cleanup) { + const now = new Date(); + const filteredSessions = reducedSessions.filter((session) => + session.expirationDate ? new Date(session.expirationDate) > now : true + ); + return setSessionHttpOnlyCookie(filteredSessions); + } else { + return setSessionHttpOnlyCookie(reducedSessions); + } } export async function getMostRecentSessionCookie(): Promise { @@ -192,14 +192,16 @@ export async function getAllSessionCookieIds( if (stringifiedCookie?.value) { const sessions: SessionCookie[] = JSON.parse(stringifiedCookie?.value); - // if (cleanup) { - // const now = new Date(); - // return sessions - // .filter((session) => new Date(session.expirationDate) > now) - // .map((session) => session.id); - // } else { - return sessions.map((session) => session.id); - // } + if (cleanup) { + const now = new Date(); + return sessions + .filter((session) => + session.expirationDate ? new Date(session.expirationDate) > now : true + ) + .map((session) => session.id); + } else { + return sessions.map((session) => session.id); + } } else { return []; } @@ -219,14 +221,14 @@ export async function getAllSessions( if (stringifiedCookie?.value) { const sessions: SessionCookie[] = JSON.parse(stringifiedCookie?.value); - // if (cleanup) { - // const now = new Date(); - // return sessions.filter( - // (session) => new Date(session.expirationDate) > now - // ); - // } else { - return sessions; - // } + if (cleanup) { + const now = new Date(); + return sessions.filter((session) => + session.expirationDate ? new Date(session.expirationDate) > now : true + ); + } else { + return sessions; + } } else { return []; }