import { createClient } from '@supabase/supabase-js'; const url = process.env.SUPABASE_URL; const key = process.env.SUPABASE_SERVICE_KEY; const opts = { auth: { persistSession: false, autoRefreshToken: false } }; // Mit Keys: echte Clients. Ohne (DB-loser core, auth:'local'): Clients bleiben // null; die Aufrufer (auth/stats/users) sind null-sicher und nutzen den lokalen // Provider. DB-Plugins (dialog) laufen ohnehin nur mit Supabase. Den Fail-Fast // für auth:'supabase' macht index.js (das kennt die config) — supabase.js bleibt // bewusst config-frei, damit Unit-Tests es ohne CMS_CONFIG importieren können. let _supabase = null; let _supabaseAuth = null; if (url && key) { // Daten-Client: Service-Role-Key, umgeht RLS. NUR für DB-Zugriffe (from/insert/…). // Wichtig: hier niemals signInWithPassword aufrufen — das schaltet den // Authorization-Header des Clients prozessweit auf das User-Token um (SIGNED_IN), // wodurch anschließende Inserts als role=authenticated laufen und an RLS scheitern. _supabase = createClient(url, key, opts); // Eigener Client nur für Auth (Login, Token-Prüfung). Getrennt, damit ein // signInWithPassword den Daten-Client oben nicht „vergiftet". Niemals ins Frontend. _supabaseAuth = createClient(url, key, opts); } else { console.warn('supabase.js: kein SUPABASE_URL/SERVICE_KEY — DB-loser Betrieb (auth: local erwartet).'); } export const supabase = _supabase; export const supabaseAuth = _supabaseAuth;