Update SSO mail sending
This commit is contained in:
parent
e6496ee2cf
commit
ac9e9b468a
4
engine/user/one-time-code.html
Normal file
4
engine/user/one-time-code.html
Normal file
@ -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,
|
||||
});
|
||||
|
@ -41,6 +41,11 @@ const localSendEmailCode = require("../engine/user/send-email-code");
|
||||
* @param {String} params.encryptionKey - Encryption Key
|
||||
* @param {String} params.encryptionSalt - Encryption Salt
|
||||
* @param {string} [params.temp_code_field] - Database table field name for temporary code
|
||||
* @param {string} params.mail_domain
|
||||
* @param {string} params.mail_username
|
||||
* @param {string} params.mail_password
|
||||
* @param {number} [params.mail_port]
|
||||
* @param {string} [params.sender]
|
||||
*
|
||||
* @returns { Promise<boolean>}
|
||||
*/
|
||||
@ -51,6 +56,11 @@ async function sendEmailCode({
|
||||
encryptionKey,
|
||||
encryptionSalt,
|
||||
temp_code_field,
|
||||
mail_domain,
|
||||
mail_password,
|
||||
mail_username,
|
||||
mail_port,
|
||||
sender,
|
||||
}) {
|
||||
const scheme = process.env.DSQL_HTTP_SCHEME;
|
||||
const localHost = process.env.DSQL_LOCAL_HOST;
|
||||
@ -116,6 +126,11 @@ async function sendEmailCode({
|
||||
email,
|
||||
dbSchema,
|
||||
email_login_field: emailLoginTempCodeFieldName,
|
||||
mail_domain,
|
||||
mail_password,
|
||||
mail_username,
|
||||
mail_port,
|
||||
sender,
|
||||
});
|
||||
}
|
||||
} else {
|
||||
@ -131,6 +146,18 @@ async function sendEmailCode({
|
||||
email,
|
||||
database,
|
||||
email_login_field: emailLoginTempCodeFieldName,
|
||||
mail_domain,
|
||||
mail_password,
|
||||
mail_username,
|
||||
mail_port,
|
||||
sender,
|
||||
html: fs.readFileSync(
|
||||
path.resolve(
|
||||
__dirname,
|
||||
"../../engine/user/one-time-code.html"
|
||||
),
|
||||
"utf-8"
|
||||
),
|
||||
});
|
||||
|
||||
const httpsRequest = (
|
||||
|
Loading…
Reference in New Issue
Block a user