import { createApprovalRequest } from "../../../db/device-approvals"; /** * POST /api/devices/approvals * * Aufgerufen vom NEUEN Gerät nachdem `register` mit DEVICE_LIMIT_REACHED * fehlgeschlagen ist und der User "Auf anderem Gerät bestätigen" gewählt hat. * * Body: { deviceId, platform, model?, name?, osVersion? } * * Returnt das Approval-Record (mit code für UI-Anzeige + expiresAt). * Existierende Geräte des Users werden via supabase_realtime (postgres_changes * INSERT on device_approval_requests filtered by user_id) automatisch * benachrichtigt — kein extra Push nötig. * * Bootstrap: skipDeviceCheck=true weil das Device noch nicht registriert ist. */ export default defineEventHandler(async (event) => { const user = await requireUser(event, { skipDeviceCheck: true }); const body = await readBody(event); const { deviceId, platform, model, name, osVersion } = body as { deviceId?: string; platform?: string; model?: string; name?: string; osVersion?: string; }; if (!deviceId || !platform) { throw createError({ statusCode: 400, message: "deviceId + platform required" }); } if (!["ios", "android", "web"].includes(platform)) { throw createError({ statusCode: 400, message: "invalid platform" }); } const approval = await createApprovalRequest({ userId: user.id, newDeviceId: deviceId, newPlatform: platform, newModel: model ?? null, newName: name ?? null, newOsVersion: osVersion ?? null, }); return { approval }; });