You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.1 KiB
45 lines
1.1 KiB
import { createServerClient } from '@supabase/ssr'; |
|
import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY } from '$env/static/public'; |
|
import type { Handle } from '@sveltejs/kit'; |
|
|
|
export const handle: Handle = async ({ event, resolve }) => { |
|
event.locals.supabase = createServerClient(PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY, { |
|
cookies: { |
|
getAll() { |
|
return event.cookies.getAll(); |
|
}, |
|
setAll(cookiesToSet) { |
|
cookiesToSet.forEach(({ name, value, options }) => { |
|
event.cookies.set(name, value, { ...options, path: '/' }); |
|
}); |
|
} |
|
} |
|
}); |
|
|
|
event.locals.safeGetSession = async () => { |
|
const { |
|
data: { session } |
|
} = await event.locals.supabase.auth.getSession(); |
|
|
|
if (!session) { |
|
return { session: null, user: null }; |
|
} |
|
|
|
const { |
|
data: { user }, |
|
error |
|
} = await event.locals.supabase.auth.getUser(); |
|
|
|
if (error) { |
|
return { session: null, user: null }; |
|
} |
|
|
|
return { session, user }; |
|
}; |
|
|
|
return resolve(event, { |
|
filterSerializedResponseHeaders(name) { |
|
return name === 'content-range' || name === 'x-supabase-api-version'; |
|
} |
|
}); |
|
};
|
|
|