import { createError, defineEventHandler, setResponseStatus } from "h3"; import { authConfigured, issueSession, requireSameOrigin, verifyPasscode, } from "../../utils/auth"; import { readJson } from "../../utils/http"; export default defineEventHandler(async (event) => { requireSameOrigin(event); const body = await readJson<{ passcode?: unknown }>(event, 1024); if ( !body || typeof body !== "object" || Object.keys(body).some((key) => key !== "passcode") ) throw createError({ statusCode: 400, statusMessage: "Malformed login request.", }); if (!authConfigured()) throw createError({ statusCode: 503, statusMessage: "Authentication is not configured.", }); if (!verifyPasscode(body?.passcode)) { await new Promise((resolve) => setTimeout(resolve, 350)); throw createError({ statusCode: 401, statusMessage: "Incorrect passcode.", }); } issueSession(event); setResponseStatus(event, 204); });