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 @@