Compare commits
2 Commits
897c172dfc
...
1ef75efcd8
| Author | SHA1 | Date |
|---|---|---|
|
|
1ef75efcd8 | |
|
|
214bbdfb4d |
|
|
@ -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: "/" });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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,7 +126,9 @@ async function __clean_session_store() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Logs.user.info(`Cleaned ${cleaned_user_sessions} inactive session tokens and ${cleaned_active_users} inactive users`)
|
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`)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default class SessionStore {
|
export default class SessionStore {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue