validate email test payloads

This commit is contained in:
2026-09-06 17:43:49 +03:00
parent 987b90b4c6
commit b737795eef
+9 -3
View File
@@ -1492,11 +1492,17 @@ const server = http.createServer(async (req, res) => {
if (!user) return json(res, 401, { success: false, error: 'oturum yok' }); if (!user) return json(res, 401, { success: false, error: 'oturum yok' });
if (!emailConfigured()) return json(res, 503, { success: false, error: 'E-posta yapılandırılmamış (RESEND_API_KEY yok)' }); if (!emailConfigured()) return json(res, 503, { success: false, error: 'E-posta yapılandırılmamış (RESEND_API_KEY yok)' });
try { try {
const body = await readBody(req).catch(() => ({})); const body = await readBody(req);
const html = tenderDigestHtml({ name: user.name || user.email, tenders: body.tenders || [] }); if (!body || typeof body !== 'object' || Array.isArray(body)) throw new Error('Geçersiz e-posta test gövdesi.');
const tenders = body.tenders == null ? [] : body.tenders;
if (!Array.isArray(tenders) || tenders.length > 100 || tenders.some(tender => !tender || typeof tender !== 'object' || Array.isArray(tender)))
throw new Error('İhale listesi geçersiz veya çok büyük.');
const subject = body.subject == null ? 'İhaleist — bildirim testi' : body.subject;
if (typeof subject !== 'string' || !subject.trim() || subject.length > 200) throw new Error('E-posta konusu geçersiz.');
const html = tenderDigestHtml({ name: user.name || user.email, tenders });
const { id } = await sendEmail({ const { id } = await sendEmail({
to: user.email, to: user.email,
subject: body.subject || 'İhaleist — bildirim testi', subject: subject.trim(),
html, html,
}); });
return json(res, 200, { success: true, id, to: user.email }); return json(res, 200, { success: true, id, to: user.email });