From 90396b5338794824ad32d90f30e5aa5b654602d9 Mon Sep 17 00:00:00 2001 From: Stan Runge Date: Sat, 28 Feb 2026 05:49:56 +0100 Subject: [PATCH] settings + reinvite players to lobby --- src/app.d.ts | 11 +- src/hooks.server.ts | 15 +- src/lib/components/Header.svelte | 23 +- src/lib/components/Sidebar.svelte | 28 +- src/lib/server/auth.ts | 6 +- src/lib/server/db/auth.schema.ts | 149 ++++---- src/lib/server/db/schema.ts | 5 + src/lib/server/osu/api.ts | 31 +- src/lib/server/osu/cache.ts | 42 +++ src/lib/server/permissions.ts | 56 +++ src/routes/(app)/+layout.server.ts | 13 +- src/routes/(app)/+layout.svelte | 43 ++- src/routes/(app)/+page.server.ts | 19 +- src/routes/(app)/+page.svelte | 348 ++++++++++-------- src/routes/(app)/admin/+page.server.ts | 61 +++ src/routes/(app)/admin/+page.svelte | 103 ++++++ src/routes/(app)/matches/+page.svelte | 4 +- src/routes/(app)/matches/[id]/+page.server.ts | 26 ++ src/routes/(app)/matches/[id]/+page.svelte | 21 ++ src/routes/(app)/settings/+page.server.ts | 46 +++ src/routes/(app)/settings/+page.svelte | 114 ++++++ src/routes/+error.svelte | 29 ++ src/routes/api/health/+server.ts | 27 ++ src/routes/api/matches/+server.ts | 3 +- src/routes/api/matches/[id]/+server.ts | 5 +- src/routes/api/matches/[id]/lobby/+server.ts | 3 +- src/routes/api/matches/[id]/pick/+server.ts | 3 +- src/routes/api/matches/[id]/roll/+server.ts | 3 +- .../api/matches/[id]/rolling/+server.ts | 3 +- src/routes/api/matches/[id]/score/+server.ts | 3 +- src/routes/api/queue/+server.ts | 7 +- src/routes/login/+page.server.ts | 18 + 32 files changed, 1000 insertions(+), 268 deletions(-) create mode 100644 src/lib/server/osu/cache.ts create mode 100644 src/lib/server/permissions.ts create mode 100644 src/routes/(app)/admin/+page.server.ts create mode 100644 src/routes/(app)/admin/+page.svelte create mode 100644 src/routes/(app)/settings/+page.server.ts create mode 100644 src/routes/(app)/settings/+page.svelte create mode 100644 src/routes/+error.svelte create mode 100644 src/routes/api/health/+server.ts create mode 100644 src/routes/login/+page.server.ts diff --git a/src/app.d.ts b/src/app.d.ts index 2ae6f13..d0a7b01 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -1,15 +1,18 @@ +// src/app.d.ts import type { User, Session } from 'better-auth/minimal'; -// See https://svelte.dev/docs/kit/types#app.d.ts -// for information about these interfaces declare global { namespace App { interface Locals { - user?: User; + user?: User & { role: string }; session?: Session; } - // interface Error {} + interface Error { + message: string; + code?: string; + } + // interface PageData {} // interface PageState {} // interface Platform {} diff --git a/src/hooks.server.ts b/src/hooks.server.ts index 22e93f9..bc8ea8a 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -1,14 +1,27 @@ +// src/hooks.server.ts import type { Handle } from '@sveltejs/kit'; import { building } from '$app/environment'; import { auth } from '$lib/server/auth'; import { svelteKitHandler } from 'better-auth/svelte-kit'; +import { db } from '$lib/server/db'; +import { user as userTable } from '$lib/server/db/auth.schema'; +import { eq } from 'drizzle-orm'; const handleBetterAuth: Handle = async ({ event, resolve }) => { const session = await auth.api.getSession({ headers: event.request.headers }); if (session) { event.locals.session = session.session; - event.locals.user = session.user; + + // Load fresh role from DB (better-auth doesn't include custom columns) + const dbUser = await db.query.user.findFirst({ + where: eq(userTable.id, session.user.id) + }); + + event.locals.user = { + ...session.user, + role: dbUser?.role ?? 'player' + }; } return svelteKitHandler({ event, resolve, auth, building }); diff --git a/src/lib/components/Header.svelte b/src/lib/components/Header.svelte index ed6a9f3..a0e5148 100644 --- a/src/lib/components/Header.svelte +++ b/src/lib/components/Header.svelte @@ -1,7 +1,15 @@
{#if user}
+ {#if badge} + + {badge.label} + + {/if} {#if user.image} {user.name} {/if} {user.name} +
+ +
{:else} Sign in with osu! diff --git a/src/lib/components/Sidebar.svelte b/src/lib/components/Sidebar.svelte index f7100d7..a1493b9 100644 --- a/src/lib/components/Sidebar.svelte +++ b/src/lib/components/Sidebar.svelte @@ -1,6 +1,8 @@