-- ====================================================================
-- 0055_smtp_settings — SMTP-Konfiguration über die Admin-UI
-- ====================================================================
-- Bisher kam SMTP ausschließlich aus ENV-Variablen (lib/email.ts →
-- process.env.SMTP_*). Self-Host-Kunden mussten dafür die .env editieren +
-- Container neu starten. Jetzt pro Mandant in site_settings (Admin → Mail)
-- pflegbar — mit ENV-Fallback (bestehende ENV-Setups laufen unverändert).
--
-- Vorrang in lib/email.ts: ist smtp_host in der DB gesetzt → DB-Konfig,
-- sonst ENV. smtp_pass/-user sind Geheimnisse → NICHT für anon lesbar.

alter table public.site_settings
  add column if not exists smtp_host       text,
  add column if not exists smtp_port        integer,
  add column if not exists smtp_secure      boolean,
  add column if not exists smtp_user        text,
  add column if not exists smtp_pass        text,
  add column if not exists smtp_from_email  text,
  add column if not exists smtp_from_name   text;

-- anon-Spalten-Grant neu setzen (Muster aus 0043): anon Vollzugriff entziehen,
-- dann ALLE Spalten AUSSER der Geheimnis-/SMTP-Block-Liste freigeben.
-- WICHTIG: Block-Liste = die Original-Geheimnisse aus 0043 + alle smtp_*,
-- sonst würden die in 0043 geschützten Keys wieder anon-lesbar.
revoke all on public.site_settings from anon;

do $$
declare
  v_cols text;
begin
  select string_agg(quote_ident(column_name), ', ')
    into v_cols
  from information_schema.columns
  where table_schema = 'public'
    and table_name = 'site_settings'
    and column_name not in (
      -- Geheimnis-Spalten aus 0043 (weiter geschützt):
      'ai_anthropic_key', 'ai_openai_key', 'ai_openrouter_key',
      'apple_pass_cert_p12', 'apple_pass_passphrase', 'apple_pass_type_id',
      'google_wallet_service_account_json',
      'phone_api_token', 'phone_lookup_token', 'phone_webhook_secret',
      'license_key',
      -- neu: SMTP-Konfiguration (Zugangsdaten + Infrastruktur, kein anon-Bedarf):
      'smtp_host', 'smtp_port', 'smtp_secure', 'smtp_user', 'smtp_pass',
      'smtp_from_email', 'smtp_from_name'
    );
  execute 'grant select (' || v_cols || ') on public.site_settings to anon';
end $$;
