diff --git a/src/app.d.ts b/src/app.d.ts index 8b27859..b7eb028 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -5,11 +5,7 @@ declare global { namespace App { // interface Error {} interface Locals { - // user: { - // isLoggedIn: boolean; - // email: string | null; - // username: string | null; - // } + user: User | null; } // interface PageData {} // interface PageState {} @@ -18,15 +14,15 @@ declare global { } export interface User { - email: string | null; - username: string | null; -} - -export interface Player { - id: number; - name: string; - isHost: boolean; + email: string; + username: string; } +// +// export interface Player { +// id: number; +// name: string; +// isHost: boolean; +// } export interface GameMode { id: string; diff --git a/src/hooks.server.ts b/src/hooks.server.ts index 665a820..6231aac 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -1,44 +1,50 @@ -// import { redirect, type Handle } from '@sveltejs/kit'; -// -// export const handle: Handle = async ({ event, resolve }) => { -// const sessionId = event.cookies.get('session_id'); -// let user = { -// isLoggedIn: false, -// email: '', -// username: '' -// }; -// -// if (sessionId) { -// const response = await fetch('http://hitstar.xyz/api/user/me', { -// headers: { -// 'Content-Type': 'application/json' -// }, -// credentials: 'include' -// }); -// console.log(response.status); -// console.log(await response.text()); -// -// if (response.status >= 200 && response.status < 300) { -// const uBody = await response.json(); -// user = { -// isLoggedIn: true, -// email: uBody.email, -// username: uBody.display_name || 'Unknown username' -// }; -// } -// } -// -// if (event.url.pathname.startsWith('/private') && !user.isLoggedIn) { -// redirect(307, '/error'); -// } else if (event.url.pathname.startsWith('/api') && !user.isLoggedIn) { -// return new Response(null, { status: 401 }); -// } -// -// event.locals.user = user; -// const response = await resolve(event); -// return response; -// }; +import { type Handle, type HandleFetch } from '@sveltejs/kit'; -// export const handleFetch: HandleFetch = async({request, fetch}) => { -// if (request.url -// } +export const handle: Handle = async ({ event, resolve }) => { + const sessionId = event.cookies.get('session_id'); + event.locals.user = null; + + if (sessionId) { + const request = new Request('http://hitstar.xyz/api/user/me'); + request.headers.set( + 'cookie', + event.cookies + .getAll() + .filter(({ value }) => value !== '') // account for cookie that got deleted in the current request + .map(({ name, value }) => `${name}=${encodeURIComponent(value)}`) + .join('; ') + ); + + const response = await fetch(request); + if (response.status >= 200 && response.status < 300) { + const uBody = await response.json(); + const user = { + email: uBody.email, + username: uBody.username || 'Unknown username' + }; + event.locals.user = user; + } + } + + const response = await resolve(event); + return response; +}; + +// export const handleFetch = (async ({ event, request, fetch }) => { +// console.log("fetch request to " + request.url) +// +// if (request.url.startsWith('/api/')) { +// console.log("rerouting"); +// request = new Request(request.url, request); +// +// request.headers.set( +// 'cookie', +// event.cookies +// .getAll() +// .filter(({ value }) => value !== '') // account for cookie that got deleted in the current request +// .map(({ name, value }) => `${name}=${encodeURIComponent(value)}`) +// .join('; ') +// ); +// } +// return fetch(request); +// }) satisfies HandleFetch; diff --git a/src/lib/components/PlayerList.svelte b/src/lib/components/PlayerList.svelte index c755615..2e30ab2 100644 --- a/src/lib/components/PlayerList.svelte +++ b/src/lib/components/PlayerList.svelte @@ -1,7 +1,7 @@