Integrating with SvelteKit

The following code works fine,
// hooks.server.ts
import { auth } from "$lib/auth";
import { redirect } from "@sveltejs/kit";
import type { Handle } from "@sveltejs/kit";

export const handle: Handle = async ({ event, resolve }) => {
  try {
    // Get session from better-auth
    const sessionData = await auth.api.getSession({
      headers: event.request.headers,
    });

    // Add session to locals for use in load functions
    event.locals.session = sessionData || null;
    event.locals.user = sessionData?.user || null;

    return await resolve(event);
  } catch (error) {
    console.error('Server error:', error);
    
    // Check if this is a database token expiration error
    const errorMessage = (error as any)?.message || error?.toString() || '';
    if (errorMessage.toLowerCase().includes('token') && errorMessage.toLowerCase().includes('expired')) {
      console.log('Database token expired, redirecting to login...');
      
      // Redirect to login page with a message
      throw redirect(302, '/login?error=session_expired');
    }
    
    // Re-throw other errors
    throw error;
  }
};

but when I try to use
svelteKitHandler
, page.data.session is always undefined
Was this page helpful?