Working
This commit is contained in:
@@ -1,9 +1,15 @@
|
||||
// src/hooks.server.ts
|
||||
import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY } from '$env/static/public'
|
||||
import { createServerClient } from '@supabase/ssr'
|
||||
import type { Handle } from '@sveltejs/kit'
|
||||
import { type Handle, redirect } from '@sveltejs/kit'
|
||||
import { sequence } from '@sveltejs/kit/hooks'
|
||||
|
||||
export const handle: Handle = async ({ event, resolve }) => {
|
||||
import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY } from '$env/static/public'
|
||||
|
||||
const supabase: Handle = async ({ event, resolve }) => {
|
||||
/**
|
||||
* Creates a Supabase client specific to this server request.
|
||||
*
|
||||
* The Supabase client gets the Auth token from the request cookies.
|
||||
*/
|
||||
event.locals.supabase = createServerClient(PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY, {
|
||||
cookies: {
|
||||
getAll: () => event.cookies.getAll(),
|
||||
@@ -47,7 +53,29 @@ export const handle: Handle = async ({ event, resolve }) => {
|
||||
|
||||
return resolve(event, {
|
||||
filterSerializedResponseHeaders(name) {
|
||||
/**
|
||||
* Supabase libraries use the `content-range` and `x-supabase-api-version`
|
||||
* headers, so we need to tell SvelteKit to pass it through.
|
||||
*/
|
||||
return name === 'content-range' || name === 'x-supabase-api-version'
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const authGuard: Handle = async ({ event, resolve }) => {
|
||||
const { session, user } = await event.locals.safeGetSession()
|
||||
event.locals.session = session
|
||||
event.locals.user = user
|
||||
|
||||
if (!event.locals.session && event.url.pathname.startsWith('/private')) {
|
||||
redirect(303, '/auth')
|
||||
}
|
||||
|
||||
if (event.locals.session && event.url.pathname === '/auth') {
|
||||
redirect(303, '/private/home')
|
||||
}
|
||||
|
||||
return resolve(event)
|
||||
}
|
||||
|
||||
export const handle: Handle = sequence(supabase, authGuard)
|
||||
Reference in New Issue
Block a user