monacousa-portal/src/routes/(app)/+layout.server.ts

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
};
};