37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import { createClient, type SupabaseClient } from '@supabase/supabase-js';
|
|
|
|
const url = process.env.NEXT_PUBLIC_SUPABASE_URL;
|
|
const anonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;
|
|
|
|
let browserClient: SupabaseClient | null = null;
|
|
|
|
export function getBrowserSupabase(): SupabaseClient | null {
|
|
if (typeof window === 'undefined') return null;
|
|
if (!url || !anonKey) return null;
|
|
if (browserClient) return browserClient;
|
|
browserClient = createClient(url, anonKey, {
|
|
auth: {
|
|
persistSession: true,
|
|
autoRefreshToken: true,
|
|
detectSessionInUrl: true,
|
|
},
|
|
});
|
|
return browserClient;
|
|
}
|
|
|
|
export function getServerSupabase(authHeader?: string | null): SupabaseClient | null {
|
|
if (!url || !anonKey) return null;
|
|
return createClient(url, anonKey, {
|
|
auth: { persistSession: false, autoRefreshToken: false },
|
|
global: authHeader ? { headers: { Authorization: authHeader } } : undefined,
|
|
});
|
|
}
|
|
|
|
export function getServiceRoleSupabase(): SupabaseClient | null {
|
|
const serviceKey = process.env.SUPABASE_SERVICE_ROLE_KEY;
|
|
if (!url || !serviceKey) return null;
|
|
return createClient(url, serviceKey, {
|
|
auth: { persistSession: false, autoRefreshToken: false },
|
|
});
|
|
}
|