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 ) } }