Added Support for Sessions

This commit is contained in:
Christian Risi 2025-06-29 11:03:20 +00:00
parent 6532a1988d
commit db769f4f96
3 changed files with 113 additions and 0 deletions

View File

@ -0,0 +1,23 @@
export interface ISessionBroker {
createTable(): void
createSessionFromUserID(userID: number): Session
getSessionFromUserID(userID: number) : Session
getSessionFromToken(token: string) : Session
}
export class Session {
public sessionID: number
public sessionToken: string
constructor(
sessionID: number,
sessionToken: string
) {
this.sessionID = sessionID
this.sessionToken = sessionToken
}
}

View File

@ -0,0 +1,19 @@
CREATE TABLE IF NOT EXISTS sessions (
session_id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER UNIQUE NOT NULL
session_token TEXT UNIQUE NOT NULL ,
FOREIGN KEY (user_id) references users(user_id) ON DELETE CASCADE
);
INSERT INTO sessions (user_id, session_token)
VALUES (@userID, @token);
SELECT session_id, user_id, session_token,
FROM sessions
WHERE session_token = @token;
SELECT session_id, user_id, session_token,
FROM sessions
WHERE session_id = @sessionID;

View File

@ -0,0 +1,71 @@
import type { ISessionBroker, Session } from "$lib/classes/sessions"
import { SSLSnifferApp } from "./sqlite"
class SessionDB {
public session_id: number
public user_id: number
public session_token: string
// TODO: support fingerprinting to
// TODO: increase security
// TODO: while logging in
constructor(
session_id: number,
user_id: number,
session_string: string
) {
this.session_id = session_id
this.user_id = user_id
this.session_token = session_string
}
}
export class SessionDBBroker implements ISessionBroker{
private static initialized = false
constructor() {
if (SessionDBBroker.initialized) {
// UGLY: make more specific
throw Error("SessionBroker has already been initialized")
}
}
createTable(): void {
const stmt = SSLSnifferApp.prepare(
`
CREATE TABLE IF NOT EXISTS sessions (
session_id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER UNIQUE NOT NULL
session_token TEXT UNIQUE NOT NULL ,
FOREIGN KEY (user_id) references users(user_id) ON DELETE CASCADE
);
`
)
stmt.run()
stmt.finalize()
}
getSessionFromToken(token: string): Session {
throw new Error("Method not implemented.")
}
createSessionFromUserID(userID: number): Session {
throw new Error("Method not implemented.")
}
getSessionFromUserID(userID: number): Session {
throw new Error("Method not implemented.")
}
}