diff --git a/.env b/.env index ed5fb40..e249d23 100644 --- a/.env +++ b/.env @@ -1,5 +1,5 @@ -SUPABASE_PUBLISHABLE_KEY="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl2b2FlbGN1bHR1YXRzdmtoZGl1Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzYzNzIwMTYsImV4cCI6MjA5MTk0ODAxNn0.dXU0K_7fE1uih0kzbxTeVhfsbjG1V9CEl17DIPL_tfo" -SUPABASE_URL="https://yvoaelcultuatsvkhdiu.supabase.co" -VITE_SUPABASE_PROJECT_ID="yvoaelcultuatsvkhdiu" -VITE_SUPABASE_PUBLISHABLE_KEY="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl2b2FlbGN1bHR1YXRzdmtoZGl1Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzYzNzIwMTYsImV4cCI6MjA5MTk0ODAxNn0.dXU0K_7fE1uih0kzbxTeVhfsbjG1V9CEl17DIPL_tfo" -VITE_SUPABASE_URL="https://yvoaelcultuatsvkhdiu.supabase.co" +SUPABASE_PUBLISHABLE_KEY="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImNjemx6aHZuZmJ2cmJ6cGZtZXRwIiwicm9sZSI6ImFub24iLCJpYXQiOjE3Nzg3MTU5OTQsImV4cCI6MjA5NDI5MTk5NH0.6a6U5fOnLVeeIyS8SRNLsKhlMJ7RacZgwOIxH_3_FBo" +SUPABASE_URL="https://cczlzhvnfbvrbzpfmetp.supabase.co" +VITE_SUPABASE_PROJECT_ID="cczlzhvnfbvrbzpfmetp" +VITE_SUPABASE_PUBLISHABLE_KEY="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImNjemx6aHZuZmJ2cmJ6cGZtZXRwIiwicm9sZSI6ImFub24iLCJpYXQiOjE3Nzg3MTU5OTQsImV4cCI6MjA5NDI5MTk5NH0.6a6U5fOnLVeeIyS8SRNLsKhlMJ7RacZgwOIxH_3_FBo" +VITE_SUPABASE_URL="https://cczlzhvnfbvrbzpfmetp.supabase.co" diff --git a/src/integrations/supabase/auth-middleware.ts b/src/integrations/supabase/auth-middleware.ts index 4e8f69d..713f897 100644 --- a/src/integrations/supabase/auth-middleware.ts +++ b/src/integrations/supabase/auth-middleware.ts @@ -13,31 +13,34 @@ export const requireSupabaseAuth = createMiddleware({ type: 'function' }).server const SUPABASE_PUBLISHABLE_KEY = process.env.SUPABASE_PUBLISHABLE_KEY; if (!SUPABASE_URL || !SUPABASE_PUBLISHABLE_KEY) { - throw new Response( - 'Missing Supabase environment variables. Ensure SUPABASE_URL and SUPABASE_PUBLISHABLE_KEY are set.', - { status: 500 } - ); + const missing = [ + ...(!SUPABASE_URL ? ['SUPABASE_URL'] : []), + ...(!SUPABASE_PUBLISHABLE_KEY ? ['SUPABASE_PUBLISHABLE_KEY'] : []), + ]; + const message = `Missing Supabase environment variable(s): ${missing.join(', ')}. Connect Supabase in Lovable Cloud.`; + console.error(`[Supabase] ${message}`); + throw new Error(message); } const request = getRequest(); if (!request?.headers) { - throw new Response('Unauthorized: No request headers available', { status: 401 }); + throw new Error('Unauthorized: No request headers available'); } const authHeader = request.headers.get('authorization'); if (!authHeader) { - throw new Response('Unauthorized: No authorization header provided', { status: 401 }); + throw new Error('Unauthorized: No authorization header provided'); } if (!authHeader.startsWith('Bearer ')) { - throw new Response('Unauthorized: Only Bearer tokens are supported', { status: 401 }); + throw new Error('Unauthorized: Only Bearer tokens are supported'); } const token = authHeader.replace('Bearer ', ''); if (!token) { - throw new Response('Unauthorized: No token provided', { status: 401 }); + throw new Error('Unauthorized: No token provided'); } const supabase = createClient( @@ -59,11 +62,11 @@ export const requireSupabaseAuth = createMiddleware({ type: 'function' }).server const { data, error } = await supabase.auth.getClaims(token); if (error || !data?.claims) { - throw new Response('Unauthorized: Invalid token', { status: 401 }); + throw new Error('Unauthorized: Invalid token'); } if (!data.claims.sub) { - throw new Response('Unauthorized: No user ID found in token', { status: 401 }); + throw new Error('Unauthorized: No user ID found in token'); } return next({ @@ -72,6 +75,6 @@ export const requireSupabaseAuth = createMiddleware({ type: 'function' }).server userId: data.claims.sub, claims: data.claims, }, - }) - } -) + }); + }, +); diff --git a/src/integrations/supabase/client.server.ts b/src/integrations/supabase/client.server.ts index bfe7546..ceffc0f 100644 --- a/src/integrations/supabase/client.server.ts +++ b/src/integrations/supabase/client.server.ts @@ -10,9 +10,13 @@ function createSupabaseAdminClient() { const SUPABASE_SERVICE_ROLE_KEY = process.env.SUPABASE_SERVICE_ROLE_KEY; if (!SUPABASE_URL || !SUPABASE_SERVICE_ROLE_KEY) { - throw new Error( - 'Missing Supabase server environment variables. Ensure SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY are set.' - ); + const missing = [ + ...(!SUPABASE_URL ? ['SUPABASE_URL'] : []), + ...(!SUPABASE_SERVICE_ROLE_KEY ? ['SUPABASE_SERVICE_ROLE_KEY'] : []), + ]; + const message = `Missing Supabase environment variable(s): ${missing.join(', ')}. Connect Supabase in Lovable Cloud.`; + console.error(`[Supabase] ${message}`); + throw new Error(message); } return createClient(SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY, { diff --git a/src/integrations/supabase/client.ts b/src/integrations/supabase/client.ts index c81d68f..be2c6af 100644 --- a/src/integrations/supabase/client.ts +++ b/src/integrations/supabase/client.ts @@ -9,9 +9,13 @@ function createSupabaseClient() { const SUPABASE_PUBLISHABLE_KEY = import.meta.env.VITE_SUPABASE_PUBLISHABLE_KEY || process.env.SUPABASE_PUBLISHABLE_KEY; if (!SUPABASE_URL || !SUPABASE_PUBLISHABLE_KEY) { - throw new Error( - 'Missing Supabase environment variables. Ensure SUPABASE_URL and SUPABASE_PUBLISHABLE_KEY (or VITE_ prefixed versions) are set in your .env file.' - ); + const missing = [ + ...(!SUPABASE_URL ? ['SUPABASE_URL'] : []), + ...(!SUPABASE_PUBLISHABLE_KEY ? ['SUPABASE_PUBLISHABLE_KEY'] : []), + ]; + const message = `Missing Supabase environment variable(s): ${missing.join(', ')}. Connect Supabase in Lovable Cloud.`; + console.error(`[Supabase] ${message}`); + throw new Error(message); } return createClient(SUPABASE_URL, SUPABASE_PUBLISHABLE_KEY, { diff --git a/supabase/config.toml b/supabase/config.toml index 45f3c5a..328da01 100644 --- a/supabase/config.toml +++ b/supabase/config.toml @@ -1 +1 @@ -project_id = "yvoaelcultuatsvkhdiu" \ No newline at end of file +project_id = "cczlzhvnfbvrbzpfmetp" \ No newline at end of file