73abf3c8b4
Vite hornea import.meta.env.PUBLIC_* en build time, pero el Dockerfile no tiene .env.production disponible durante `docker build` (correcto, por seguridad). Cambia el server client y la página de login para leer las vars desde process.env, que sí llega vía env_file en runtime. El browserClient no lo usa ningún island — se mantiene con import.meta.env para el día que se necesite. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import { createServerClient, createBrowserClient, type CookieOptionsWithName } from '@supabase/ssr';
|
|
import type { AstroCookies } from 'astro';
|
|
|
|
const SCHEMA = 'prestamos';
|
|
|
|
const SUPABASE_URL = process.env.PUBLIC_SUPABASE_URL ?? import.meta.env.PUBLIC_SUPABASE_URL;
|
|
const SUPABASE_ANON_KEY = process.env.PUBLIC_SUPABASE_ANON_KEY ?? import.meta.env.PUBLIC_SUPABASE_ANON_KEY;
|
|
|
|
const cookieOptions: CookieOptionsWithName = {
|
|
name: 'sb',
|
|
path: '/',
|
|
sameSite: 'lax',
|
|
httpOnly: true,
|
|
secure: process.env.NODE_ENV === 'production',
|
|
};
|
|
|
|
export function serverClient(cookies: AstroCookies) {
|
|
return createServerClient(
|
|
SUPABASE_URL,
|
|
SUPABASE_ANON_KEY,
|
|
{
|
|
db: { schema: SCHEMA },
|
|
cookieOptions,
|
|
cookies: {
|
|
get: (name) => cookies.get(name)?.value,
|
|
set: (name, value, options) => cookies.set(name, value, options),
|
|
remove: (name, options) => cookies.delete(name, options),
|
|
},
|
|
},
|
|
);
|
|
}
|
|
|
|
export function browserClient() {
|
|
return createBrowserClient(
|
|
import.meta.env.PUBLIC_SUPABASE_URL,
|
|
import.meta.env.PUBLIC_SUPABASE_ANON_KEY,
|
|
{ db: { schema: SCHEMA }, cookieOptions },
|
|
);
|
|
}
|