Skip to content

Commit c8d998d

Browse files
committed
fix(serverClient): parse cookie from header again
1 parent 0790274 commit c8d998d

File tree

4 files changed

+28
-23
lines changed

4 files changed

+28
-23
lines changed

src/module.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -122,11 +122,7 @@ export default defineNuxtModule<ModuleOptions>({
122122
extendViteConfig(config => {
123123
config.optimizeDeps = {
124124
...config.optimizeDeps,
125-
include: [
126-
...(config.optimizeDeps?.include || []),
127-
'@floatingpixels/supabase-nuxt > @supabase/postgrest-js',
128-
'@floatingpixels/supabase-nuxt > cookie',
129-
],
125+
include: [...(config.optimizeDeps?.include || []), '@floatingpixels/supabase-nuxt > @supabase/postgrest-js'],
130126
}
131127
})
132128
},

src/runtime/plugins/supabase.server.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { defineNuxtPlugin, useRuntimeConfig, useRequestEvent } from 'nuxt/app'
2-
import { createServerClient } from '@supabase/ssr'
3-
import { setCookie, parseCookies } from 'h3'
2+
import { createServerClient, parseCookieHeader } from '@supabase/ssr'
3+
import { setCookie } from 'h3'
44

55
export default defineNuxtPlugin({
66
name: 'supabase',
@@ -15,10 +15,13 @@ export default defineNuxtPlugin({
1515
const supabaseServerClient = createServerClient(url, anonKey, {
1616
cookies: {
1717
getAll: (): { name: string; value: string }[] => {
18-
const cookie_records = parseCookies(event)
19-
return Object.entries(cookie_records).map(([name, value]) => ({
20-
name,
21-
value,
18+
const cookie_header = getHeader(event, 'Cookie')
19+
if (!cookie_header) {
20+
return []
21+
}
22+
return parseCookieHeader(cookie_header).map(item => ({
23+
name: item.name,
24+
value: item.value ?? '',
2225
}))
2326
},
2427
setAll(cookiesToSet) {

src/runtime/server/services/supabaseServerClient.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { SupabaseClient } from '@supabase/supabase-js'
2-
import { createServerClient } from '@supabase/ssr'
2+
import { createServerClient, parseCookieHeader } from '@supabase/ssr'
33
import type { H3Event } from 'h3'
4-
import { setCookie, parseCookies } from 'h3'
4+
import { setCookie } from 'h3'
55
import { useRuntimeConfig } from '#imports'
66

77
export const supabaseServerClient = async <T>(event: H3Event): Promise<SupabaseClient<T>> => {
@@ -15,10 +15,13 @@ export const supabaseServerClient = async <T>(event: H3Event): Promise<SupabaseC
1515
supabaseClient = createServerClient(url, anonKey, {
1616
cookies: {
1717
getAll: (): { name: string; value: string }[] => {
18-
const cookie_records = parseCookies(event)
19-
return Object.entries(cookie_records).map(([name, value]) => ({
20-
name,
21-
value,
18+
const cookie_header = getHeader(event, 'Cookie')
19+
if (!cookie_header) {
20+
return []
21+
}
22+
return parseCookieHeader(cookie_header).map(item => ({
23+
name: item.name,
24+
value: item.value ?? '',
2225
}))
2326
},
2427
setAll(cookiesToSet) {

src/runtime/server/services/supabaseServiceRole.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { SupabaseClient } from '@supabase/supabase-js'
2-
import { createServerClient } from '@supabase/ssr'
2+
import { createServerClient, parseCookieHeader } from '@supabase/ssr'
33
import type { H3Event } from 'h3'
4-
import { setCookie, parseCookies } from 'h3'
4+
import { setCookie, getHeader } from 'h3'
55
import { useRuntimeConfig } from '#imports'
66

77
export const supabaseServiceRole = async <T>(event: H3Event): Promise<SupabaseClient<T>> => {
@@ -23,10 +23,13 @@ export const supabaseServiceRole = async <T>(event: H3Event): Promise<SupabaseCl
2323
supabaseClient = createServerClient(url, serviceRoleKey, {
2424
cookies: {
2525
getAll: (): { name: string; value: string }[] => {
26-
const cookie_records = parseCookies(event)
27-
return Object.entries(cookie_records).map(([name, value]) => ({
28-
name,
29-
value,
26+
const cookie_header = getHeader(event, 'Cookie')
27+
if (!cookie_header) {
28+
return []
29+
}
30+
return parseCookieHeader(cookie_header).map(item => ({
31+
name: item.name,
32+
value: item.value ?? '',
3033
}))
3134
},
3235
setAll(cookiesToSet) {

0 commit comments

Comments
 (0)