Added Application Session
This commit is contained in:
parent
678fe8c300
commit
3cac439056
56
src/lib/classes/app-sessions.ts
Normal file
56
src/lib/classes/app-sessions.ts
Normal file
@ -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
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user