Files
harheimertc/server/api/newsletter/confirm.get.js
Torsten Schulz (local) 3586704cce
Some checks failed
Code Analysis and Production Deploy / analyze (push) Failing after 10m29s
Code Analysis and Production Deploy / deploy-production (push) Has been skipped
Code Analysis and Production Deploy / deploy-test (push) Has been skipped
Update file permissions for multiple server and test files to executable mode
2026-07-15 08:45:12 +02:00

63 lines
1.5 KiB
JavaScript
Executable File

import { readSubscribers, writeSubscribers } from '../../utils/newsletter.js'
export default defineEventHandler(async (event) => {
try {
const query = getQuery(event)
const token = query.token
if (!token) {
throw createError({
statusCode: 400,
statusMessage: 'Bestätigungstoken fehlt'
})
}
const subscribers = await readSubscribers()
const subscriber = subscribers.find(s => s.confirmationToken === token)
if (!subscriber) {
throw createError({
statusCode: 404,
statusMessage: 'Ungültiger Bestätigungstoken'
})
}
if (subscriber.confirmed) {
// Bereits bestätigt
return {
success: true,
alreadyConfirmed: true,
message: 'Newsletter-Anmeldung wurde bereits bestätigt'
}
}
// Bestätigung durchführen
subscriber.confirmed = true
subscriber.confirmedAt = new Date().toISOString()
subscriber.confirmationToken = null
// Stelle sicher, dass groupIds existiert (für Rückwärtskompatibilität)
if (!subscriber.groupIds) {
subscriber.groupIds = []
}
await writeSubscribers(subscribers)
return {
success: true,
alreadyConfirmed: false,
message: 'Newsletter-Anmeldung erfolgreich bestätigt'
}
} catch (error) {
console.error('Fehler bei Newsletter-Bestätigung:', error)
if (error.statusCode) {
throw error
}
throw createError({
statusCode: 500,
statusMessage: 'Fehler bei der Newsletter-Bestätigung'
})
}
})