Private
Public Access
1
0

feat(email): Adding email options for registration

This commit is contained in:
gauvainboiche
2026-03-31 11:35:12 +02:00
parent 655928318e
commit c7ad5898e6
61 changed files with 16104 additions and 47 deletions

45
server/email.js Normal file
View File

@@ -0,0 +1,45 @@
import nodemailer from "nodemailer";
const transport = nodemailer.createTransport({
host: process.env.SMTP_HOST ?? "mailpit",
port: Number(process.env.SMTP_PORT ?? 1025),
secure: process.env.SMTP_SECURE === "true",
...(process.env.SMTP_USER
? { auth: { user: process.env.SMTP_USER, pass: process.env.SMTP_PASS } }
: {}),
});
const FROM = process.env.SMTP_FROM ?? "Star Wars Wild Space <noreply@wildspace.local>";
const APP_URL = (process.env.APP_URL ?? "http://localhost:8080").replace(/\/$/, "");
export async function sendConfirmationEmail(to, token) {
const url = `${APP_URL}/?email_confirm=${encodeURIComponent(token)}`;
await transport.sendMail({
from: FROM,
to,
subject: "Confirmez votre adresse email — Star Wars Wild Space",
text: `Cliquez sur le lien ci-dessous pour confirmer votre compte :\n\n${url}\n\nCe lien expire dans 24 heures.`,
html: `
<h2>Star Wars — Wild Space</h2>
<p>Cliquez sur le lien ci-dessous pour confirmer votre adresse email :</p>
<p><a href="${url}" style="font-size:16px">${url}</a></p>
<p><small>Ce lien expire dans 24 heures.</small></p>
`,
});
}
export async function sendPasswordResetEmail(to, token) {
const url = `${APP_URL}/?reset=${encodeURIComponent(token)}`;
await transport.sendMail({
from: FROM,
to,
subject: "Réinitialisation de mot de passe — Star Wars Wild Space",
text: `Cliquez sur le lien ci-dessous pour réinitialiser votre mot de passe :\n\n${url}\n\nCe lien expire dans 1 heure. Si vous n'avez pas fait cette demande, ignorez cet email.`,
html: `
<h2>Star Wars — Wild Space</h2>
<p>Cliquez sur le lien ci-dessous pour réinitialiser votre mot de passe :</p>
<p><a href="${url}" style="font-size:16px">${url}</a></p>
<p><small>Ce lien expire dans 1 heure. Si vous n'avez pas fait cette demande, vous pouvez ignorer cet email.</small></p>
`,
});
}