-- Passkeys (WebAuthn/FIDO2) als zweiter Anmeldeweg. -- -- ACHTUNG beim Erzeugen weiterer Migrationen: "prisma migrate diff" wollte -- hier zusaetzlich die Trigramm-Indizes "dokument_absender_trgm" und -- "vorgang_titel_trgm" loeschen. Die stammen aus prisma/sql/suche.sql und -- sind Prisma unbekannt - ein DROP haette die unscharfe Suche stillgelegt, -- ohne dass irgendetwas fehlgeschlagen waere. Solche Zeilen gehoeren aus -- jeder erzeugten Migration entfernt. -- CreateEnum CREATE TYPE "PasskeyAnfrageArt" AS ENUM ('REGISTRIERUNG', 'ANMELDUNG'); -- AlterEnum -- This migration adds more than one value to an enum. -- With PostgreSQL versions 11 and earlier, this is not possible -- in a single migration. This can be worked around by creating -- multiple migrations, each migration adding only one value to -- the enum. ALTER TYPE "AuditAktion" ADD VALUE 'PASSKEY_REGISTRIERT'; ALTER TYPE "AuditAktion" ADD VALUE 'PASSKEY_ENTFERNT'; -- CreateTable CREATE TABLE "passkey" ( "id" TEXT NOT NULL, "userId" TEXT NOT NULL, "credentialId" TEXT NOT NULL, "publicKey" BYTEA NOT NULL, "counter" BIGINT NOT NULL DEFAULT 0, "transports" TEXT[] DEFAULT ARRAY[]::TEXT[], "name" TEXT NOT NULL, "geraeteArt" TEXT, "gesichert" BOOLEAN NOT NULL DEFAULT false, "erstelltAm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "zuletztBenutztAm" TIMESTAMP(3), CONSTRAINT "passkey_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "passkey_anfrage" ( "id" TEXT NOT NULL, "challenge" TEXT NOT NULL, "art" "PasskeyAnfrageArt" NOT NULL, "userId" TEXT, "ablaufAm" TIMESTAMP(3) NOT NULL, "erstelltAm" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "passkey_anfrage_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE UNIQUE INDEX "passkey_credentialId_key" ON "passkey"("credentialId"); -- CreateIndex CREATE INDEX "passkey_userId_idx" ON "passkey"("userId"); -- CreateIndex CREATE UNIQUE INDEX "passkey_anfrage_challenge_key" ON "passkey_anfrage"("challenge"); -- CreateIndex CREATE INDEX "passkey_anfrage_ablaufAm_idx" ON "passkey_anfrage"("ablaufAm"); -- AddForeignKey ALTER TABLE "passkey" ADD CONSTRAINT "passkey_userId_fkey" FOREIGN KEY ("userId") REFERENCES "benutzer"("id") ON DELETE CASCADE ON UPDATE CASCADE;