31 lines
914 B
TypeScript
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 } };
|
|
});
|