update email settings

This commit is contained in:
xfarrow 2024-03-14 11:24:40 +01:00
parent ec68bf292d
commit a06d15db47
2 changed files with 31 additions and 2 deletions

View File

@ -2,12 +2,18 @@
# API server settings
API_SERVER_PORT = 3000
JWT_SECRET_KEY = jwt-secret # Change this in production
LIMITER_WINDOW = 3600000 # Milliseconds in limiter window
LIMITER_MAXIMUM_PER_WINDOW = 5000 # Requests for each limiter window
SMTP_USERNAME = blink@ik.me # Fill only if NEEDS_EMAIL_VERIFICATION is true
SMTP_PASSWORD = your_password # Fill only if NEEDS_EMAIL_VERIFICATION is true
SMTP_PORT = 465 # Fill only if NEEDS_EMAIL_VERIFICATION is true
SMTP_HOST = mail.infomaniak.com # Fill only if NEEDS_EMAIL_VERIFICATION is true
SMTP_SECURE = true
FRONT_END_URL = http://localhost # Primary fron-end's root URL
# Database settings
@ -18,4 +24,4 @@ POSTGRES_PORT = 5432
# Application settings
ALLOW_USER_REGISTRATION = true
NEEDS_EMAIL_VERIFICATION = false # Does this server need users to verify their e-mail address?
NEEDS_EMAIL_VERIFICATION = true # Does this server need users to verify their e-mail address?

View File

@ -2,18 +2,33 @@ const nodemailer = require('nodemailer');
// Create a transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
service: 'Infomaniak',
host: process.env.SMTP_HOST,
port: process.env.SMTP_PORT,
secure: Boolean(process.env.SMTP_SECURE),
auth: {
user: process.env.SMTP_USERNAME,
pass: process.env.SMTP_PASSWORD
}
});
/**
* Given the destination address and the activation code, sends an e-mail
* to activate such account.
* @param {*} destinationAddress
* @param {*} code
*/
function sendConfirmationLink(destinationAddress, code) {
const confirmationLink = `${process.env.FRONT_END_URL}/activate-account.html?q=${code}`
sendMail(destinationAddress, 'Verify your Blink Account', null, getConfirmationLinkHtmlPage(confirmationLink));
}
/**
*
* @param {*} destinationAddress Destination Address
* @param {*} subject Subject
* @param {*} text Plain-text body
* @param {*} html Html body
*/
function sendMail(destinationAddress, subject, text, html) {
let mailOptions = {
@ -31,6 +46,14 @@ function sendMail(destinationAddress, subject, text, html) {
});
}
/**
* Returns an Html page to be rendered in the user's email client which has an
* "Activate Account" button
* @param {*} confirmationLink the link the user shoud follow to activate the
* account
*
* @returns A string representing the Html page.
*/
function getConfirmationLinkHtmlPage(confirmationLink) {
return `<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Activation Page</title><style>body{font-family:Arial,sans-serif;background-color:#f4f4f4;margin:0;padding:0;display:flex;justify-content:center;align-items:center;height:100vh}.container{text-align:center;padding:20px;border-radius:10px;box-shadow:0 0 20px rgba(0,0,0,.1);background-color:#fff}h1{color:#333}a{display:block;padding:10px 20px;margin-top:20px;background-color:#007bff;color:#fff;text-decoration:none;border-radius:5px;transition:background-color .3s ease}a:hover{background-color:#0056b3}</style></head><body><div class="container"><h1>Activate your Blink Account</h1><p>Please click the button below to activate your account</p><a href="${confirmationLink}">Activate Now</a></div></body></html>`;
}