import { readUsers, hashPassword, writeUsers } from '../../utils/auth.js' import nodemailer from 'nodemailer' import crypto from 'crypto' export default defineEventHandler(async (event) => { try { const body = await readBody(event) const { email } = body if (!email) { throw createError({ statusCode: 400, message: 'E-Mail-Adresse ist erforderlich' }) } // Find user const users = await readUsers() const user = users.find(u => u.email.toLowerCase() === email.toLowerCase()) // Always return success (security: don't reveal if email exists) if (!user) { return { success: true, message: 'Falls ein Konto mit dieser E-Mail existiert, wurde eine E-Mail gesendet.' } } // Generate temporary password const tempPassword = crypto.randomBytes(8).toString('hex') const hashedPassword = await hashPassword(tempPassword) // Update user password user.password = hashedPassword user.passwordResetRequired = true const updatedUsers = users.map(u => u.id === user.id ? user : u) await writeUsers(updatedUsers) // Send email with temporary password const smtpUser = process.env.SMTP_USER const smtpPass = process.env.SMTP_PASS if (!smtpUser || !smtpPass) { console.warn('SMTP-Credentials fehlen! E-Mail-Versand wird übersprungen.') console.warn(`SMTP_USER=${smtpUser ? 'gesetzt' : 'FEHLT'}, SMTP_PASS=${smtpPass ? 'gesetzt' : 'FEHLT'}`) // Continue without sending email - security: don't reveal if email exists } else { const transporter = nodemailer.createTransport({ host: process.env.SMTP_HOST || 'smtp.gmail.com', port: process.env.SMTP_PORT || 587, secure: false, auth: { user: smtpUser, pass: smtpPass } }) const mailOptions = { from: process.env.SMTP_FROM || 'noreply@harheimertc.de', to: user.email, subject: 'Passwort zurücksetzen - Harheimer TC', html: `
Hallo ${user.name},
Sie haben eine Anfrage zum Zurücksetzen Ihres Passworts gestellt.
Ihr temporäres Passwort lautet: ${tempPassword}
Bitte melden Sie sich damit an und ändern Sie Ihr Passwort im Mitgliederbereich.
Falls Sie diese Anfrage nicht gestellt haben, ignorieren Sie diese E-Mail.
Mit sportlichen Grüßen,
Ihr Harheimer TC