Update SSO mail sending
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
<h1>One Time Code</h1>
|
||||
<p>Please use this code to login</p>
|
||||
<h2>{{code}}</h2>
|
||||
<p>Please not that this code expires after 10 minutes</p>
|
||||
@@ -2,6 +2,9 @@
|
||||
|
||||
const hashPassword = require("../../functions/hashPassword");
|
||||
const varDatabaseDbHandler = require("../engine/utils/varDatabaseDbHandler");
|
||||
const nodemailer = require("nodemailer");
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -9,9 +12,23 @@ const varDatabaseDbHandler = require("../engine/utils/varDatabaseDbHandler");
|
||||
* @param {string} param0.email
|
||||
* @param {import("../../types/database-schema.td").DSQL_DatabaseSchemaType} [param0.dbSchema]
|
||||
* @param {string} param0.email_login_field
|
||||
* @param {string} param0.mail_domain
|
||||
* @param {string} param0.mail_username
|
||||
* @param {string} param0.mail_password
|
||||
* @param {number} [param0.mail_port]
|
||||
* @param {string} [param0.sender]
|
||||
* @returns
|
||||
*/
|
||||
async function localSendEmailCode({ email, dbSchema, email_login_field }) {
|
||||
async function localSendEmailCode({
|
||||
email,
|
||||
dbSchema,
|
||||
email_login_field,
|
||||
mail_domain,
|
||||
mail_username,
|
||||
mail_password,
|
||||
mail_port,
|
||||
sender,
|
||||
}) {
|
||||
try {
|
||||
/**
|
||||
* User auth
|
||||
@@ -71,9 +88,43 @@ async function localSendEmailCode({ email, dbSchema, email_login_field }) {
|
||||
|
||||
if (foundUser && foundUser[0] && email_login_field) {
|
||||
const tempCode = generateCode();
|
||||
|
||||
let transporter = nodemailer.createTransport({
|
||||
host: mail_domain,
|
||||
port: mail_port || 465,
|
||||
secure: true,
|
||||
auth: {
|
||||
user: mail_username,
|
||||
pass: mail_password,
|
||||
},
|
||||
});
|
||||
|
||||
let mailObject = {};
|
||||
|
||||
mailObject["from"] = `"Datasquirel SSO" <${
|
||||
sender || "support@datasquirel.com"
|
||||
}>`;
|
||||
mailObject["sender"] = sender || "support@summitlending.com";
|
||||
mailObject["to"] = email;
|
||||
mailObject["subject"] = "One Time Email Login Code";
|
||||
mailObject["html"] = fs
|
||||
.readFileSync(
|
||||
path.resolve(__dirname, "one-time-code.html"),
|
||||
"utf-8"
|
||||
)
|
||||
.replace(/{{code}}/, tempCode);
|
||||
|
||||
const info = await transporter.sendMail(mailObject);
|
||||
|
||||
if (!info?.accepted) throw new Error("Mail not Sent!");
|
||||
|
||||
/** ********************************************** */
|
||||
/** ********************************************** */
|
||||
/** ********************************************** */
|
||||
|
||||
let setTempCode = await varDatabaseDbHandler({
|
||||
queryString: `UPDATE users SET ${email_login_field} = ? WHERE email = ?`,
|
||||
queryValuesArray: [tempCode, email],
|
||||
queryValuesArray: [tempCode + `-${Date.now()}`, email],
|
||||
database: dbFullName.replace(/[^a-z0-9_]/g, ""),
|
||||
tableSchema,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user