42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { createClient } from '@supabase/supabase-js';
|
|
|
|
const supabaseUrl = import.meta.env.VITE_SUPABASE_URL;
|
|
const supabaseAnonKey = import.meta.env.VITE_SUPABASE_ANON_KEY;
|
|
|
|
if (!supabaseUrl || !supabaseAnonKey) {
|
|
throw new Error('Missing Supabase environment variables');
|
|
}
|
|
|
|
// Create Supabase client with proper session management enabled
|
|
export const supabase = createClient(supabaseUrl, supabaseAnonKey, {
|
|
auth: {
|
|
autoRefreshToken: true, // ✅ Auto-refresh expired tokens
|
|
persistSession: true, // ✅ Persist session in storage
|
|
detectSessionInUrl: true, // ✅ Auto-detect OAuth callback
|
|
storage: typeof window !== 'undefined' ? window.localStorage : undefined,
|
|
},
|
|
global: {
|
|
headers: {
|
|
'X-Client-Info': 'supabase-js-web',
|
|
},
|
|
},
|
|
});
|
|
|
|
// Helper to create authenticated client (kept for backward compatibility)
|
|
// NOTE: With proper session management, this should no longer be needed
|
|
// Once session is set via supabase.auth.setSession(), the base client will have auth context
|
|
export const getAuthenticatedClient = (accessToken: string) => {
|
|
return createClient(supabaseUrl, supabaseAnonKey, {
|
|
auth: {
|
|
autoRefreshToken: false,
|
|
persistSession: false,
|
|
detectSessionInUrl: false,
|
|
},
|
|
global: {
|
|
headers: {
|
|
Authorization: `Bearer ${accessToken}`,
|
|
},
|
|
},
|
|
});
|
|
};
|