import { requireUser } from "../../utils/auth"; import { usePrisma } from "../../utils/prisma"; import { getActiveCooldown, resolveCooldown } from "../../db/cooldown"; /** * GET /api/protection/screentime-passcode * * Gibt den Screen-Time-Passcode zurück — aber NUR wenn kein aktiver * Cooldown läuft (canDisableProtection = true). Das stellt sicher dass * der Code erst nach der 24h-Wartezeit abrufbar ist. * * Gibt { passcode: null } zurück wenn noch kein Code gesetzt wurde * oder Cooldown noch läuft (kein Error, kein 403 — Client unterscheidet * anhand passcode=null ob Code fehlt oder gesperrt ist). */ export default defineEventHandler(async (event) => { const user = await requireUser(event); const db = usePrisma(); const cooldown = await getActiveCooldown(user.id); if (cooldown) { const expired = new Date() >= cooldown.cooldownEndsAt; if (!expired) { return { success: true, data: { passcode: null, reason: "cooldown_active" } }; } await resolveCooldown(cooldown.id); } const profile = await db.profile.findUnique({ where: { id: user.id }, select: { screentimePasscode: true }, }); return { success: true, data: { passcode: profile?.screentimePasscode ?? null }, }; });