31 lines
914 B
TypeScript

/**
* POST /api/magic/devices/:deviceId/cancel-cooldown
*
* Removes an active Magic device cooldown immediately.
*/
export default defineEventHandler(async (event) => {
const user = await requireUser(event);
const deviceId = getRouterParam(event, "deviceId");
if (!deviceId) {
throw createError({ statusCode: 400, message: "deviceId required" });
}
const db = usePrisma();
const device = await db.userDevice.findUnique({
where: { userId_deviceId: { userId: user.id, deviceId } },
select: { id: true, magicEnrolledAt: true, magicRevokedAt: true },
});
if (!device || !device.magicEnrolledAt || device.magicRevokedAt) {
throw createError({ statusCode: 404, message: "Magic-Binding nicht gefunden" });
}
await db.userDevice.update({
where: { id: device.id },
data: { magicCooldownUntil: null },
});
return { success: true, data: { cooldownUntil: null } };
});