import { getUserFromToken, hasAnyRole } from '../../../../../utils/auth.js' import { readSubscribers, writeSubscribers } from '../../../../../utils/newsletter.js' export default defineEventHandler(async (event) => { try { // Authentifizierung prüfen const token = getCookie(event, 'auth_token') || getHeader(event, 'authorization')?.replace('Bearer ', '') if (!token) { throw createError({ statusCode: 401, statusMessage: 'Nicht authentifiziert' }) } const user = await getUserFromToken(token) if (!user || !hasAnyRole(user, 'admin', 'vorstand', 'newsletter')) { throw createError({ statusCode: 403, statusMessage: 'Keine Berechtigung' }) } const groupId = getRouterParam(event, 'id') const body = await readBody(event) const { subscriberId } = body if (!subscriberId) { throw createError({ statusCode: 400, statusMessage: 'Abonnenten-ID ist erforderlich' }) } const subscribers = await readSubscribers() const subscriber = subscribers.find(s => s.id === subscriberId) if (!subscriber) { throw createError({ statusCode: 404, statusMessage: 'Abonnent nicht gefunden' }) } // Stelle sicher, dass groupIds existiert if (!subscriber.groupIds || !Array.isArray(subscriber.groupIds)) { subscriber.groupIds = [] } // Entferne Gruppe aus groupIds const index = subscriber.groupIds.indexOf(groupId) if (index === -1) { throw createError({ statusCode: 400, statusMessage: 'Abonnent ist nicht für diese Gruppe angemeldet' }) } subscriber.groupIds.splice(index, 1) // Wenn keine Gruppen mehr vorhanden, als abgemeldet markieren if (subscriber.groupIds.length === 0) { subscriber.unsubscribedAt = new Date().toISOString() subscriber.confirmed = false } await writeSubscribers(subscribers) return { success: true, message: 'Abonnent erfolgreich entfernt' } } catch (error) { console.error('Fehler beim Entfernen des Abonnenten:', error) if (error.statusCode) { throw error } throw createError({ statusCode: 500, statusMessage: 'Fehler beim Entfernen des Abonnenten' }) } })