-- Migration 0004: echte Kundenkonten für Google-/PayPal-Login. -- -- Bewusst OAuth-only (kein eigenes Passwort-Feld): dadurch entfällt jede Passwort-Sicherheits- -- verantwortung für uns komplett (kein Hashing, kein Passwort-Leck-Risiko) — Google/PayPal -- übernehmen die eigentliche Identitätsprüfung, wir speichern nur, WER (per Provider-ID) -- eingeloggt ist. Siehe functions/_shared/customer-auth.js + functions/api/auth/*. CREATE TABLE IF NOT EXISTS customers ( id INTEGER PRIMARY KEY AUTOINCREMENT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, last_login_at TEXT NOT NULL, -- "google" oder "paypal" — jeweils per OpenID Connect, siehe functions/_shared/oauth.js. provider TEXT NOT NULL CHECK (provider IN ('google', 'paypal')), -- Die eindeutige, unveränderliche Nutzer-ID VOM PROVIDER (z.B. Googles "sub"-Feld) — NICHT die -- E-Mail-Adresse, weil E-Mail-Adressen sich ändern können, die Provider-ID aber nicht. provider_user_id TEXT NOT NULL, email TEXT NOT NULL, name TEXT, UNIQUE (provider, provider_user_id) ); CREATE INDEX IF NOT EXISTS idx_customers_email ON customers(email);