-- 2FA fuer Admin-Login (BSI-Mindeststandard, Cyber-Versicherung).
-- ====================================================================
-- TOTP-Secrets werden im admin_users-Eintrag selbst gespeichert (keine
-- separate Tabelle — 1:1-Beziehung, kein Sharding-Sinn). `totp_secret`
-- wird Base32 gespeichert (otplib-Konvention), `totp_enabled` markiert
-- den Aktivierungs-Status nach erfolgreichem Setup.
-- Backup-Codes als Array von SHA256-Hashes — Klartext nur einmal beim
-- Setup an den User zurueckgegeben, danach nicht mehr abrufbar.

alter table public.admin_users
  add column if not exists totp_secret text,
  add column if not exists totp_enabled boolean not null default false,
  add column if not exists totp_backup_codes text[] not null default '{}',
  add column if not exists totp_enabled_at timestamptz;
