-- Zwei-Faktor-Authentifizierung TOTP (IAM-04, siehe core-kanban/tickets/IAM-04.md). CREATE TABLE totp_credentials ( user_id UUID PRIMARY KEY REFERENCES users(id), secret TEXT NOT NULL, confirmed BOOLEAN NOT NULL DEFAULT false, created_at TIMESTAMPTZ NOT NULL DEFAULT now() ); -- code_hash enthaelt NIEMALS den Klartext-Wiederherstellungscode, nur dessen -- SHA-256-Hash. used_at markiert einmalige Verwendbarkeit (Akzeptanzkriterium 3). CREATE TABLE totp_recovery_codes ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID NOT NULL REFERENCES users(id), code_hash BYTEA NOT NULL UNIQUE, used_at TIMESTAMPTZ, created_at TIMESTAMPTZ NOT NULL DEFAULT now() ); -- Erzwingbare Aktivierungspflicht pro Tenant (Singleton-Zeile, Modell C). CREATE TABLE totp_policy ( id BOOLEAN PRIMARY KEY DEFAULT true CHECK (id), required BOOLEAN NOT NULL DEFAULT false );