-- =====================================================================
-- 0046 — Login-Code fürs Self-Service-Portal (zusätzlich zum Magic-Link)
-- =====================================================================
-- Der klickbare Magic-Link öffnet im System-Browser, nicht im installierten
-- Standalone-PWA — Browser und PWA haben getrennte Cookie-Speicher, die im
-- Browser gesetzte Session landet also nie im PWA. Ein 6-stelliger Code, den
-- man IM PWA eintippt, verifiziert aus dem PWA-Kontext und setzt das Cookie
-- dort, wo es hingehört.
--
-- `attempts` begrenzt Brute-Force auf den 6-stelligen Code (zusätzlich zum
-- Rate-Limit in der Server-Action): nach zu vielen Fehlversuchen wird der
-- Token entwertet.

alter table public.magic_link_tokens
  add column if not exists code text,
  add column if not exists attempts integer not null default 0;
