import { getUserFromToken, readUsers, writeUsers, hasAnyRole, migrateUserRoles } from '../../../utils/auth.js' import nodemailer from 'nodemailer' export default defineEventHandler(async (event) => { try { const token = getCookie(event, 'auth_token') const currentUser = await getUserFromToken(token) if (!currentUser || !hasAnyRole(currentUser, 'admin')) { throw createError({ statusCode: 403, message: 'Zugriff verweigert' }) } const body = await readBody(event) const { userId, roles } = body const users = await readUsers() const user = users.find(u => u.id === userId) if (!user) { throw createError({ statusCode: 404, message: 'Benutzer nicht gefunden' }) } // Migriere Benutzer falls nötig migrateUserRoles(user) // Activate user and set roles user.active = true if (Array.isArray(roles) && roles.length > 0) { user.roles = roles } else { // Fallback: einzelne Rolle als Array user.roles = roles ? [roles] : ['mitglied'] } const updatedUsers = users.map(u => u.id === userId ? user : u) await writeUsers(updatedUsers) // Send approval email try { 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 } 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 } }) await transporter.sendMail({ from: process.env.SMTP_FROM || 'noreply@harheimertc.de', to: user.email, subject: 'Zugang freigeschaltet - Harheimer TC', html: `
Hallo ${user.name},
Ihr Zugang zum Mitgliederbereich wurde freigeschaltet!
Sie können sich jetzt mit Ihrer E-Mail-Adresse und Ihrem Passwort anmelden.
Mit sportlichen Grüßen,
Ihr Harheimer TC