feat: add user admin status and profile management
- Updated user schema to include isAdmin field. - Enhanced authentication hooks to fetch and set user admin status. - Created ProfileButton component for user profile actions. - Implemented profile and password update functionality. - Added session management for user accounts. - Developed login and signup pages with form handling. - Introduced layout server for user session data. - Updated daily page to reflect character changes.
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
import type { Handle } from '@sveltejs/kit';
|
||||
import { building } from '$app/environment';
|
||||
import { auth } from '$lib/server/auth';
|
||||
import { db } from '$lib/server/db';
|
||||
import { eq } from 'drizzle-orm';
|
||||
import { user as userTable } from '$lib/server/db/auth.schema';
|
||||
import { svelteKitHandler } from 'better-auth/svelte-kit';
|
||||
|
||||
const handleBetterAuth: Handle = async ({ event, resolve }) => {
|
||||
@@ -9,6 +12,12 @@ const handleBetterAuth: Handle = async ({ event, resolve }) => {
|
||||
if (session) {
|
||||
event.locals.session = session.session;
|
||||
event.locals.user = session.user;
|
||||
|
||||
// Fetch the isAdmin field from the database
|
||||
const dbUser = await db.select({ isAdmin: userTable.isAdmin }).from(userTable).where(eq(userTable.id, session.user.id)).limit(1);
|
||||
if (dbUser.length > 0) {
|
||||
(event.locals.user as any).isAdmin = dbUser[0].isAdmin;
|
||||
}
|
||||
}
|
||||
|
||||
return svelteKitHandler({ event, resolve, auth, building });
|
||||
|
||||
Reference in New Issue
Block a user