Add integration configuration from remix

This commit is contained in:
gpt-engineer-app[bot]
2026-05-14 02:54:11 +00:00
parent 0e82ccc05a
commit d315e2ce0d
5 changed files with 36 additions and 25 deletions
+16 -13
View File
@@ -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<Database>(
@@ -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,
},
})
}
)
});
},
);
+7 -3
View File
@@ -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<Database>(SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY, {
+7 -3
View File
@@ -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<Database>(SUPABASE_URL, SUPABASE_PUBLISHABLE_KEY, {