Implementiere Passwort-Zurücksetzen-Funktionalität im authController, einschließlich E-Mail-Versand und Token-Generierung. Aktualisiere die Benutzer- und Router-Modelle, um neue Routen für Passwort-Wiederherstellung hinzuzufügen. Passe die Frontend-Komponenten für die Passwort-Zurücksetzen-Logik an und verbessere die Benutzeroberfläche für die Eingabe der E-Mail-Adresse.
This commit is contained in:
79
config/email.js
Normal file
79
config/email.js
Normal file
@@ -0,0 +1,79 @@
|
||||
const nodemailer = require('nodemailer');
|
||||
|
||||
// E-Mail-Konfiguration
|
||||
const smtpConfig = {
|
||||
host: process.env.SMTP_HOST || 'smtp.1blu.de',
|
||||
port: process.env.SMTP_PORT || 465,
|
||||
secure: true, // true für 465, false für andere Ports
|
||||
auth: {
|
||||
user: process.env.SMTP_USER || 'e226079_0-kontakt',
|
||||
pass: process.env.SMTP_PASS || 'aNN31bll3Na!'
|
||||
}
|
||||
};
|
||||
|
||||
// Debug-Logging der SMTP-Konfiguration
|
||||
console.log('=== SMTP CONFIGURATION DEBUG ===');
|
||||
console.log('Host:', smtpConfig.host);
|
||||
console.log('Port:', smtpConfig.port);
|
||||
console.log('Secure:', smtpConfig.secure);
|
||||
console.log('User:', smtpConfig.auth.user);
|
||||
console.log('Pass:', smtpConfig.auth.pass.replace(/./g, '*')); // Passwort maskieren
|
||||
console.log('Environment Variables:');
|
||||
console.log(' SMTP_HOST:', process.env.SMTP_HOST || 'undefined');
|
||||
console.log(' SMTP_PORT:', process.env.SMTP_PORT || 'undefined');
|
||||
console.log(' SMTP_USER:', process.env.SMTP_USER || 'undefined');
|
||||
console.log(' SMTP_PASS:', process.env.SMTP_PASS ? '***' : 'undefined');
|
||||
console.log('================================');
|
||||
|
||||
const transporter = nodemailer.createTransport(smtpConfig);
|
||||
|
||||
// E-Mail-Template für Passwort-Reset
|
||||
const getPasswordResetEmailTemplate = (resetUrl, userName) => {
|
||||
return {
|
||||
subject: 'Passwort zurücksetzen - Miriam Gemeinde',
|
||||
html: `
|
||||
<div style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto;">
|
||||
<h2 style="color: #333;">Passwort zurücksetzen</h2>
|
||||
<p>Hallo ${userName},</p>
|
||||
<p>Sie haben eine Anfrage zum Zurücksetzen Ihres Passworts gestellt.</p>
|
||||
<p>Klicken Sie auf den folgenden Link, um ein neues Passwort zu erstellen:</p>
|
||||
<p style="margin: 20px 0;">
|
||||
<a href="${resetUrl}"
|
||||
style="background-color: #007bff; color: white; padding: 12px 24px; text-decoration: none; border-radius: 4px; display: inline-block;">
|
||||
Passwort zurücksetzen
|
||||
</a>
|
||||
</p>
|
||||
<p>Dieser Link ist 1 Stunde gültig.</p>
|
||||
<p>Falls Sie diese Anfrage nicht gestellt haben, können Sie diese E-Mail ignorieren.</p>
|
||||
<hr style="margin: 30px 0; border: none; border-top: 1px solid #eee;">
|
||||
<p style="color: #666; font-size: 12px;">
|
||||
Miriam Gemeinde<br>
|
||||
Diese E-Mail wurde automatisch generiert.
|
||||
</p>
|
||||
</div>
|
||||
`,
|
||||
text: `
|
||||
Passwort zurücksetzen - Miriam Gemeinde
|
||||
|
||||
Hallo ${userName},
|
||||
|
||||
Sie haben eine Anfrage zum Zurücksetzen Ihres Passworts gestellt.
|
||||
|
||||
Klicken Sie auf den folgenden Link, um ein neues Passwort zu erstellen:
|
||||
${resetUrl}
|
||||
|
||||
Dieser Link ist 1 Stunde gültig.
|
||||
|
||||
Falls Sie diese Anfrage nicht gestellt haben, können Sie diese E-Mail ignorieren.
|
||||
|
||||
---
|
||||
Miriam Gemeinde
|
||||
Diese E-Mail wurde automatisch generiert.
|
||||
`
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
transporter,
|
||||
getPasswordResetEmailTemplate
|
||||
};
|
||||
Reference in New Issue
Block a user