28 lines
786 B
TypeScript
28 lines
786 B
TypeScript
import { redirect } from '@sveltejs/kit';
|
|
import type { LayoutServerLoad } from './$types';
|
|
|
|
export const load: LayoutServerLoad = async ({ locals, url }) => {
|
|
const { session, user, member } = await locals.safeGetSession();
|
|
|
|
// Require authentication for all app routes
|
|
if (!session) {
|
|
throw redirect(303, `/login?redirectTo=${encodeURIComponent(url.pathname)}`);
|
|
}
|
|
|
|
// Require member profile to exist
|
|
if (!member) {
|
|
// User is authenticated but has no member profile - unusual situation
|
|
await locals.supabase.auth.signOut();
|
|
throw redirect(303, '/login?error=no_profile');
|
|
}
|
|
|
|
// Check if user's email is verified
|
|
const emailVerified = user?.email_confirmed_at !== null && user?.email_confirmed_at !== undefined;
|
|
|
|
return {
|
|
session,
|
|
member,
|
|
emailVerified
|
|
};
|
|
};
|