Compare commits

...

2 Commits

2 changed files with 23 additions and 8 deletions

View File

@ -4,15 +4,12 @@ import { error, redirect } from "@sveltejs/kit";
import { env } from "$env/dynamic/private" import { env } from "$env/dynamic/private"
import SessionStore from "$lib/server/session_store" import SessionStore from "$lib/server/session_store"
import { init_db, close_db, create_user } from "$lib/server/database"; import { init_db, close_db, create_user, do_users_exist } from "$lib/server/database";
import Logs from "$lib/server/log"; import Logs from "$lib/server/log";
let local_setup = { let local_setup: {user_setup: (() => void) | ((username: string, password: string) => void) }= {
user_setup: (username: string, password: string) => { user_setup: () => {}
create_user({name: "name", gender: "x", address: "home", username: username, password: password });
local_setup.user_setup = () => {}
}
} }
async function init() { async function init() {
@ -30,6 +27,17 @@ async function init() {
await init_db(); await init_db();
if (!do_users_exist()) {
local_setup.user_setup = (username: string, password: string) => {
Logs.user.info("Creating first user")
create_user({name: "name", gender: "x", address: "home", username: username, password: password });
local_setup.user_setup = () => {}
}
}
Logs.process.info("Initializing of server complete") Logs.process.info("Initializing of server complete")
} }
@ -75,12 +83,15 @@ export let handle: Handle = async function ({ event, resolve }) {
const token = event.cookies.get("session_id") const token = event.cookies.get("session_id")
const user = SessionStore.get_user_by_access_token(token ?? "") const user = SessionStore.get_user_by_access_token(token ?? "")
Logs.user.debug(user ? `Found user ${user.id} for session token` : "No user for session token")
if (!token || !user) { if (!token || !user) {
if (event.request.method == "POST" && event.route.id != "/login") { if (event.request.method == "POST" && event.route.id != "/login") {
return error(401, "Invalid Session"); return error(401, "Invalid Session");
} }
if (token) { if (token) {
Logs.user.debug("recieved an invalid session id. Deleting on client.")
event.cookies.delete("session_id", { path: "/" }); event.cookies.delete("session_id", { path: "/" });
} }

View File

@ -92,11 +92,13 @@ function get_user_by_access_token(token: string): User | null {
function logout_user_session(token: string): boolean { function logout_user_session(token: string): boolean {
const token_info = active_session_tokens.get(token); const token_info = active_session_tokens.get(token);
if (!token_info) { if (!token_info) {
Logs.user.warn(`Failed to logout user by token, because token does not exist`); Logs.user.warn(`Failed to logout user by token, because token does not exist`);
return false; return false;
} }
Logs.user.info(`Logging out user ${token_info?.user_id}`)
token_info.expiry_time = new Date(0); token_info.expiry_time = new Date(0);
return true; return true;
@ -124,8 +126,10 @@ async function __clean_session_store() {
} }
}); });
if (cleaned_active_users > 0 || cleaned_active_users > 0) {
Logs.user.info(`Cleaned ${cleaned_user_sessions} inactive session tokens and ${cleaned_active_users} inactive users`) Logs.user.info(`Cleaned ${cleaned_user_sessions} inactive session tokens and ${cleaned_active_users} inactive users`)
} }
}
export default class SessionStore { export default class SessionStore {
static issue_access_token_for_user = issue_access_token_for_user; static issue_access_token_for_user = issue_access_token_for_user;