Skip to content

Commit

Permalink
chore: use new svelte init hook
Browse files Browse the repository at this point in the history
  • Loading branch information
johanohly committed Dec 19, 2024
1 parent e98c512 commit e108c2f
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 49 deletions.
Binary file modified bun.lockb
Binary file not shown.
89 changes: 44 additions & 45 deletions src/hooks.server.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,53 @@
import { type Handle, json, text } from '@sveltejs/kit';
import { type Handle, json, type ServerInit, text } from '@sveltejs/kit';
import { sequence } from '@sveltejs/kit/hooks';
import type { Cookie } from 'lucia';

import { env } from '$env/dynamic/private';
import { lucia } from '$lib/server/auth';
import { appConfig } from '$lib/server/utils/config';

async function loadConfig() {
await appConfig.get();
await appConfig.loadFromEnv();
}

export const init: ServerInit = async () => {
try {
await loadConfig();
} catch (err) {
console.error('Error loading app config from .env:', err);
process.exit(-1);
}
};

const authHandle: Handle = async ({ event, resolve }) => {
const sessionId = event.cookies.get(lucia.sessionCookieName);
if (!sessionId) {
event.locals.user = null;
event.locals.session = null;
return resolve(event);
}

const { session, user } = await lucia.validateSession(sessionId);
let sessionCookie: Cookie | undefined;
if (session?.fresh) {
sessionCookie = lucia.createSessionCookie(session.id);
}
if (!session) {
sessionCookie = lucia.createBlankSessionCookie();
}
if (sessionCookie) {
event.cookies.set(sessionCookie.name, sessionCookie.value, {
path: '.',
...sessionCookie.attributes,
});
}

event.locals.user = user;
event.locals.session = session;
return resolve(event);
};

/**
* CSRF protection copied from SvelteKit but with the ability to provide multiple origins.
* Logic duplicated from `https://github.com/sveltejs/kit/blob/143dbf9da9d65dedfc370160c229c317fe18361c/packages/kit/src/runtime/server/respond.js#L63`
Expand Down Expand Up @@ -54,47 +96,4 @@ const isFormContentType = (request: Request) => {
);
};

async function loadConfig() {
await appConfig.get();
await appConfig.loadFromEnv();
}

const setup = loadConfig().catch((err) => {
console.error('Error loading app config from .env:', err);
process.exit(-1);
});

const setupHandle: Handle = async ({ event, resolve }) => {
await setup;
return resolve(event);
};

const authHandle: Handle = async ({ event, resolve }) => {
const sessionId = event.cookies.get(lucia.sessionCookieName);
if (!sessionId) {
event.locals.user = null;
event.locals.session = null;
return resolve(event);
}

const { session, user } = await lucia.validateSession(sessionId);
let sessionCookie: Cookie | undefined;
if (session && session.fresh) {
sessionCookie = lucia.createSessionCookie(session.id);
}
if (!session) {
sessionCookie = lucia.createBlankSessionCookie();
}
if (sessionCookie) {
event.cookies.set(sessionCookie.name, sessionCookie.value, {
path: '.',
...sessionCookie.attributes,
});
}

event.locals.user = user;
event.locals.session = session;
return resolve(event);
};

export const handle: Handle = sequence(csrfHandle, setupHandle, authHandle);
export const handle: Handle = sequence(csrfHandle, authHandle);
10 changes: 6 additions & 4 deletions src/lib/components/map/state.svelte.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import { prepareFlightArcData, prepareVisitedAirports } from '$lib/utils';

class HoverInfo {
hoveredArc: ReturnType<typeof prepareFlightArcData>[number] | null =
$state.raw(null);
hoveredAirport: ReturnType<typeof prepareVisitedAirports>[number] | null =
$state.raw(null);
hoveredArc = $state.raw<
ReturnType<typeof prepareFlightArcData>[number] | null
>(null);
hoveredAirport = $state.raw<
ReturnType<typeof prepareVisitedAirports>[number] | null
>(null);
}
export const hoverInfo = new HoverInfo();

0 comments on commit e108c2f

Please sign in to comment.