import fs from 'fs/promises' import path from 'path' export default defineEventHandler(async (event) => { try { const filename = getRouterParam(event, 'filename') if (!filename) { throw createError({ statusCode: 400, statusMessage: 'Dateiname fehlt' }) } // Erlaubte Dateinamen für Sicherheit const allowedFiles = [ 'spielplan_gesamt.pdf', 'spielplan_erwachsene.pdf', 'spielplan_nachwuchs.pdf', 'spielplan_erwachsene_1.pdf', 'spielplan_erwachsene_2.pdf', 'spielplan_erwachsene_3.pdf', 'spielplan_erwachsene_4.pdf', 'spielplan_erwachsene_5.pdf', 'spielplan_jugendmannschaft.pdf' ] // Prüfe ob es eine dynamische Mannschafts-PDF ist const isDynamicMannschaft = filename.startsWith('spielplan_') && filename.endsWith('.pdf') && !allowedFiles.includes(filename) if (!allowedFiles.includes(filename) && !isDynamicMannschaft) { throw createError({ statusCode: 403, statusMessage: 'Datei nicht erlaubt' }) } let filePath if (isDynamicMannschaft) { // Für dynamische Mannschafts-PDFs: Verwende Gesamt-Spielplan als Fallback // Hier könnte später ein PDF-Generator implementiert werden filePath = path.join(process.cwd(), 'public', 'documents', 'spielplaene', 'spielplan_gesamt.pdf') } else { // Für vordefinierte PDFs filePath = path.join(process.cwd(), 'public', 'documents', 'spielplaene', filename) } // Prüfe ob Datei existiert try { await fs.access(filePath) } catch (error) { // Fallback: Erstelle eine informative HTML-Seite const htmlContent = ` PDF nicht verfügbar
📄 PDF-Datei nicht verfügbar
Die angeforderte PDF-Datei "${filename}" wurde noch nicht hochgeladen.
Was können Sie tun?
• Laden Sie die PDF-Datei über das CMS hoch
• Kontaktieren Sie den Administrator
• Versuchen Sie es später erneut
` setHeader(event, 'Content-Type', 'text/html; charset=utf-8') return htmlContent } // Datei lesen const fileBuffer = await fs.readFile(filePath) // Content-Type setzen setHeader(event, 'Content-Type', 'application/pdf') setHeader(event, 'Content-Disposition', `attachment; filename="${filename}"`) setHeader(event, 'Content-Length', fileBuffer.length.toString()) return fileBuffer } catch (error) { console.error('Fehler beim Laden der PDF-Datei:', error) if (error.statusCode) { throw error } throw createError({ statusCode: 500, statusMessage: 'Fehler beim Laden der PDF-Datei' }) } })