From eb43d6528066d2bb4961596cbc5a01cb0103df9f Mon Sep 17 00:00:00 2001 From: streaper2 Date: Tue, 12 May 2026 20:32:00 +0200 Subject: [PATCH] correction responsive --- admin/src/app/actions/user.ts | 4 ++-- admin/src/lib/mail.ts | 38 +++++++++++++++++++++++++++++++++++ app/actions/auth.ts | 2 +- next-env.d.ts | 2 +- 4 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 admin/src/lib/mail.ts diff --git a/admin/src/app/actions/user.ts b/admin/src/app/actions/user.ts index 7ee5dd5..3806e7d 100644 --- a/admin/src/app/actions/user.ts +++ b/admin/src/app/actions/user.ts @@ -75,7 +75,7 @@ export async function scheduleUserDeletion(userId: string, reason: string, delay // Send notification email if (settings?.deleteAccountTemplate) { - const { sendEmail } = await import("@/../../lib/mail"); + const { sendEmail } = await import("@/lib/mail"); const html = settings.deleteAccountTemplate .replace(/{name}/g, user.name) .replace(/{siteName}/g, settings.siteName) @@ -114,7 +114,7 @@ export async function reactivateUser(userId: string, reason: string) { // Send confirmation email if (settings?.reactivateAccountTemplate) { - const { sendEmail } = await import("@/../../lib/mail"); + const { sendEmail } = await import("@/lib/mail"); const html = settings.reactivateAccountTemplate .replace(/{name}/g, user.name) .replace(/{siteName}/g, settings.siteName) diff --git a/admin/src/lib/mail.ts b/admin/src/lib/mail.ts new file mode 100644 index 0000000..8b5c0ee --- /dev/null +++ b/admin/src/lib/mail.ts @@ -0,0 +1,38 @@ +import nodemailer from 'nodemailer'; + +console.log('SMTP Config:', { + host: process.env.SMTP_HOST, + port: process.env.SMTP_PORT, + secure: process.env.SMTP_SECURE, + user: process.env.SMTP_USER +}); +const transporter = nodemailer.createTransport({ + host: process.env.SMTP_HOST, + port: parseInt(process.env.SMTP_PORT || '587'), + secure: process.env.SMTP_SECURE === 'true', + auth: { + user: process.env.SMTP_USER, + pass: process.env.SMTP_PASS, + }, + tls: { + rejectUnauthorized: false + } +}); + +export const sendEmail = async ({ to, subject, html }: { to: string; subject: string; html: string }) => { + const mailOptions = { + from: process.env.SMTP_FROM || '"Afrohub" ', + to, + subject, + html, + }; + + try { + const info = await transporter.sendMail(mailOptions); + console.log('Email sent: ' + info.response); + return info; + } catch (error) { + console.error('Error sending email:', error); + throw error; + } +}; diff --git a/app/actions/auth.ts b/app/actions/auth.ts index 31b8fd3..5a762fb 100644 --- a/app/actions/auth.ts +++ b/app/actions/auth.ts @@ -30,7 +30,7 @@ export async function reactivateUserAccount(userId: string, reason: string) { // Optionnel : Envoyer un mail de confirmation const settings = await prisma.siteSetting.findUnique({ where: { id: "singleton" } }); if (settings?.reactivateAccountTemplate) { - const { sendEmail } = await import("@/../lib/mail"); + const { sendEmail } = await import("@/lib/mail"); const html = settings.reactivateAccountTemplate .replace(/{name}/g, user.name) .replace(/{siteName}/g, settings.siteName) diff --git a/next-env.d.ts b/next-env.d.ts index c4b7818..9edff1c 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -import "./.next/dev/types/routes.d.ts"; +import "./.next/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information.