supabase
supabase copied to clipboard
Can "serverSupabaseUser.ts" use existing user?
I have several server middlewares. They are decoupled, so I'm calling serverSupabaseUser(event) several times.
Is it safe to check event.context._user. Since it starts with a _, I assume it is not for public use.
const user = event.context._user ?? await serverSupabaseUser(event);
If it is safe, can you add it to serverSupabaseUser.ts?
export const serverSupabaseUser = async (event: H3Event): Promise<User | null> => {
const client = serverSupabaseClient(event)
if (event.context._user) {
return event.context._user;
}
if (!event.context._token) {
return null
}
const { data: { user: supabaseUser }, error } = await client.auth.getUser(event.context._token)
event.context._user = error ? null : supabaseUser
return event.context._user
}
good question. also concerned about the number of calls to serverSupabaseUser. currently defining in middleware but it feels redundant
import { defineEventHandler, H3Event, parseCookies, setCookie } from 'h3'
import { serverSupabaseUser } from "#supabase/server";
export default defineEventHandler(async (event: H3Event) => {
const cookies = parseCookies(event)
if(cookies && cookies['sb-access-token']){
const user = await serverSupabaseUser(event);
if (user) {
event.context.user = user;
}
}
});