Aufträge L5: öffentliche Bestätigung per Link (idempotent, Frühbeginn nur bei Privatpersonen)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-07 14:14:59 +00:00
1 parent aca393d564
commit 6cb5bfa6c7
2 files changed
+114 -1

No files matched your search

+15 -1
View File
@@ -9,12 +9,13 @@ import { createWriteLimiter } from '../services/writeLimiter.js'
import { findAuftragByTokenHash } from '../services/auftraege/auftragStore.js'
import { lesePdf } from '../services/auftraege/ablage.js'
import { oeffentlicheAnsicht } from '../services/auftraege/auftragSicht.js'
import { GESPERRT_MELDUNG } from '../services/auftraege/bestaetigung.js'
import { bestaetigeAuftrag, GESPERRT_MELDUNG } from '../services/auftraege/bestaetigung.js'
import { AuftragError, sendeFehler } from '../services/auftraege/fehler.js'
import { auftraegeAktiv } from '../services/auftraege/schalter.js'
import { hashToken } from '../services/auftraege/token.js'
const UNGUELTIG = 'Dieser Link ist ungültig oder abgelaufen.'
const HAEKCHEN = 'Bitte bestätigen Sie den Auftrag mit dem Häkchen.'
const ZU_VIELE = 'Zu viele Anfragen. Bitte später erneut versuchen.'
const echteUhr = () => new Date()
@@ -101,4 +102,17 @@ router.get('/:token/pdf', getLimiter.middleware(nachIp, ZU_VIELE), async (req, r
}
})
router.post('/:token/bestaetigen', postLimiter.middleware(nachIp, ZU_VIELE), async (req, res) => {
try {
const a = await ladeNachToken(req, res)
if (!a) return
const body = req.body && typeof req.body === 'object' ? req.body : {}
if (body.bestaetigt !== true) return res.status(400).json({ error: HAEKCHEN })
const neu = await bestaetigeAuftrag(a, { ueber: 'link', fruehbeginn: body.fruehbeginn === true, jetzt: uhr() })
res.json({ auftrag: oeffentlicheAnsicht(neu) })
} catch (err) {
sendeFehler(res, 'auftrag', err)
}
})
export default router