Skip to content

Commit 95d905b

Browse files
authored
fix(session): ssr getSession warning (#418)
1 parent ab9a83a commit 95d905b

File tree

3 files changed

+12
-9
lines changed

3 files changed

+12
-9
lines changed

src/runtime/composables/useSupabaseSession.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ import { useState, type Ref } from '#imports'
55
* Reactive `Session` state from Supabase. This is initialized in both client and server plugin
66
* and, on the client, also updated through `onAuthStateChange` events.
77
*/
8-
export const useSupabaseSession = (): Ref<Session | null> => useState<Session | null>('supabase_session', () => null)
8+
export const useSupabaseSession = (): Ref<Omit<Session, 'user'> | null> => useState<Omit<Session, 'user'> | null>('supabase_session', () => null)

src/runtime/plugins/supabase.server.ts

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { createServerClient, parseCookieHeader } from '@supabase/ssr'
22
import { getHeader, setCookie } from 'h3'
33
import { fetchWithRetry } from '../utils/fetch-retry'
4+
import { serverSupabaseUser, serverSupabaseSession } from '../server/services'
45
import { defineNuxtPlugin, useRequestEvent, useRuntimeConfig, useSupabaseSession, useSupabaseUser } from '#imports'
56
import type { CookieOptions } from '#app'
67

@@ -33,13 +34,13 @@ export default defineNuxtPlugin({
3334

3435
// Initialize user and session states
3536
const [
36-
{
37-
data: { session },
38-
},
39-
{
40-
data: { user },
41-
},
42-
] = await Promise.all([client.auth.getSession(), client.auth.getUser()])
37+
session,
38+
user,
39+
] = await Promise.all([
40+
serverSupabaseSession(event).catch(() => null),
41+
serverSupabaseUser(event).catch(() => null),
42+
])
43+
4344
useSupabaseSession().value = session
4445
useSupabaseUser().value = user
4546

src/runtime/server/services/serverSupabaseSession.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ import type { H3Event } from 'h3'
33
import { createError } from 'h3'
44
import { serverSupabaseClient } from '../services/serverSupabaseClient'
55

6-
export const serverSupabaseSession = async (event: H3Event): Promise<Session | null> => {
6+
export const serverSupabaseSession = async (event: H3Event): Promise<Omit<Session, 'user'> | null> => {
77
const client = await serverSupabaseClient(event)
88

99
const { data: { session }, error } = await client.auth.getSession()
1010
if (error) {
1111
throw createError({ statusMessage: error?.message })
1212
}
1313

14+
// @ts-expect-error we need to delete user from the session object here to suppress the warning coming from GoTrueClient
15+
delete session?.user
1416
return session
1517
}

0 commit comments

Comments
 (0)