-- ===================================================================== -- 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;