From 3cac4390569c074fb366713d846a3e0eadce32e4 Mon Sep 17 00:00:00 2001 From: Christian Risi <75698846+CnF-Gris@users.noreply.github.com> Date: Mon, 30 Jun 2025 11:55:44 +0000 Subject: [PATCH] Added Application Session --- src/lib/classes/app-sessions.ts | 56 +++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/lib/classes/app-sessions.ts diff --git a/src/lib/classes/app-sessions.ts b/src/lib/classes/app-sessions.ts new file mode 100644 index 0000000..816396f --- /dev/null +++ b/src/lib/classes/app-sessions.ts @@ -0,0 +1,56 @@ +import type { Cookies } from "@sveltejs/kit"; +import { SessionApp, type Session } from "./sessions"; +import { UserApp, type User } from "./users"; +import { JoseSingleton } from "$lib/utils/jtw-utils"; + +export class AppData { + + public session: Session + public user: User + + public constructor( + session: Session, + user: User + ) { + this.session = session + this.user = user + } + + + public async toCookie() { + + const signedSession = await JoseSingleton.signObject(this.session) + const encodedSession = btoa(signedSession) + + return encodedSession + } + + public static async extractAppDataFromCookies(cookies: Cookies) { + + const encodedSessionToken = cookies.get("session") + + if (!encodedSessionToken) { + return null + } + + const decodedSessionToken = atob(encodedSessionToken) + + const sessionToken = await JoseSingleton.verifyObject(decodedSessionToken) + + const session = SessionApp.getSessionFromToken(sessionToken) + + if (!session) { + return null + } + + const user = UserApp.getUserFromSession( + session + ) + + return new AppData( + session, + user + ) + } + +} \ No newline at end of file