chahinebrini 677b67902b feat(devices): protected device enrollment + mobileconfig generator
Backend:
- ProtectedDevice prisma model + migration add_protected_devices
- DB helpers: list/count/get/create/confirm/revoke
- mobileconfig.ts utility — XML-escape, unique UUIDs per request
- 5 endpoints under /api/devices/* (avoid /api/devices conflict with existing
  Capacitor UserDevice route by using /api/devices/protected for list)

Phase 1: backend ready. DoH-server token-routing comes in phase 2.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 04:06:49 +02:00

24 lines
1.1 KiB
SQL

-- Migration: add_protected_devices
-- Multi-Device DNS-Schutz für Legend-User.
-- Legend: bis zu 3 Geräte mit individuellem DoH-Token geschützt.
CREATE TABLE "rebreak"."protected_devices" (
"id" UUID NOT NULL DEFAULT gen_random_uuid(),
"user_id" UUID NOT NULL,
"dns_token" TEXT NOT NULL,
"platform" TEXT NOT NULL,
"label" TEXT NOT NULL,
"status" TEXT NOT NULL DEFAULT 'pending',
"installed_at" TIMESTAMPTZ,
"last_dns_query_at" TIMESTAMPTZ,
"revoked_at" TIMESTAMPTZ,
"created_at" TIMESTAMPTZ NOT NULL DEFAULT NOW(),
"updated_at" TIMESTAMPTZ NOT NULL DEFAULT NOW(),
CONSTRAINT "protected_devices_pkey" PRIMARY KEY ("id")
);
CREATE UNIQUE INDEX "protected_devices_dns_token_key" ON "rebreak"."protected_devices"("dns_token");
CREATE INDEX "protected_devices_user_id_idx" ON "rebreak"."protected_devices"("user_id");
CREATE INDEX "protected_devices_dns_token_idx" ON "rebreak"."protected_devices"("dns_token");