import { d as defineEventHandler, r as readBody, c as createError } from '../../../nitro/nitro.mjs';
import { r as readUsers, h as hashPassword, w as writeUsers } from '../../../_/auth.mjs';
import nodemailer from 'nodemailer';
import 'node:http';
import 'node:https';
import 'node:events';
import 'node:buffer';
import 'node:fs';
import 'node:path';
import 'node:crypto';
import 'node:url';
import 'bcryptjs';
import 'jsonwebtoken';
import 'fs';
import 'path';
import '../../../_/encryption.mjs';
import 'crypto';

const register_post = 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"
      });
    }
    if (password.length < 8) {
      throw createError({
        statusCode: 400,
        message: "Das Passwort muss mindestens 8 Zeichen lang sein"
      });
    }
    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"
      });
    }
    const hashedPassword = await hashPassword(password);
    const newUser = {
      id: Date.now().toString(),
      email: email.toLowerCase(),
      password: hashedPassword,
      name,
      phone: phone || "",
      role: "mitglied",
      active: false,
      // Requires admin approval
      created: (/* @__PURE__ */ new Date()).toISOString(),
      lastLogin: null
    };
    users.push(newUser);
    await writeUsers(users);
    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
        }
      });
      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: `
          <h2>Neue Registrierung</h2>
          <p>Ein neuer Benutzer hat sich registriert und wartet auf Freigabe:</p>
          <ul>
            <li><strong>Name:</strong> ${name}</li>
            <li><strong>E-Mail:</strong> ${email}</li>
            <li><strong>Telefon:</strong> ${phone || "Nicht angegeben"}</li>
          </ul>
          <p>Bitte pr\xFCfen Sie die Registrierung im CMS.</p>
        `
      });
      await transporter.sendMail({
        from: process.env.SMTP_FROM || "noreply@harheimertc.de",
        to: email,
        subject: "Registrierung erhalten - Harheimer TC",
        html: `
          <h2>Registrierung erhalten</h2>
          <p>Hallo ${name},</p>
          <p>vielen Dank f\xFCr Ihre Registrierung beim Harheimer TC!</p>
          <p>Ihre Anfrage wird vom Vorstand gepr\xFCft. Sie erhalten eine E-Mail, sobald Ihr Zugang freigeschaltet wurde.</p>
          <br>
          <p>Mit sportlichen Gr\xFC\xDFen,<br>Ihr Harheimer TC</p>
        `
      });
    } catch (emailError) {
      console.error("E-Mail-Versand fehlgeschlagen:", emailError);
    }
    return {
      success: true,
      message: "Registrierung erfolgreich. Sie erhalten eine E-Mail, sobald Ihr Zugang freigeschaltet wurde."
    };
  } catch (error) {
    console.error("Registrierungs-Fehler:", error);
    throw error;
  }
});

export { register_post as default };
//# sourceMappingURL=register.post.mjs.map
