import { readUsers, writeUsers, hashPassword } from '../../utils/auth.js' import nodemailer from 'nodemailer' export default defineEventHandler(async (event) => { try { const body = await readBody(event) const { name, email, phone, password } = body if (!name || !email || !password) { throw createError({ statusCode: 400, message: 'Name, E-Mail und Passwort sind erforderlich' }) } // Validate password length if (password.length < 8) { throw createError({ statusCode: 400, message: 'Das Passwort muss mindestens 8 Zeichen lang sein' }) } // Check if user already exists const users = await readUsers() const existingUser = users.find(u => u.email.toLowerCase() === email.toLowerCase()) if (existingUser) { throw createError({ statusCode: 409, message: 'Ein Benutzer mit dieser E-Mail-Adresse existiert bereits' }) } // Hash password const hashedPassword = await hashPassword(password) // Create new user (inactive until approved) const newUser = { id: Date.now().toString(), email: email.toLowerCase(), password: hashedPassword, name, phone: phone || '', role: 'mitglied', active: false, // Requires admin approval created: new Date().toISOString(), lastLogin: null } users.push(newUser) await writeUsers(users) // Send notification email to admin try { const transporter = nodemailer.createTransport({ host: process.env.SMTP_HOST || 'smtp.gmail.com', port: process.env.SMTP_PORT || 587, secure: false, auth: { user: process.env.SMTP_USER, pass: process.env.SMTP_PASS } }) // Email to admin await transporter.sendMail({ from: process.env.SMTP_FROM || 'noreply@harheimertc.de', to: process.env.SMTP_ADMIN || 'j.dichmann@gmx.de', subject: 'Neue Registrierung - Harheimer TC', html: `
Ein neuer Benutzer hat sich registriert und wartet auf Freigabe:
Bitte prüfen Sie die Registrierung im CMS.
` }) // Email to user await transporter.sendMail({ from: process.env.SMTP_FROM || 'noreply@harheimertc.de', to: email, subject: 'Registrierung erhalten - Harheimer TC', html: `Hallo ${name},
vielen Dank für Ihre Registrierung beim Harheimer TC!
Ihre Anfrage wird vom Vorstand geprüft. Sie erhalten eine E-Mail, sobald Ihr Zugang freigeschaltet wurde.
Mit sportlichen Grüßen,
Ihr Harheimer TC