HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: //var/www/javago-api-updates/src/helper/email.js
import nodemailer from "nodemailer";
import ejs from "ejs";
import * as authService from "../services/auth/auth.services.js";
import bcrypt from "bcrypt";
import User from "../models/users.model.js";

export async function sendMail(to, subject, html, OTP, type = 0) {
  let transporter = nodemailer.createTransport({
    host: process.env.SMTP_HOST,
    port: 587,
    secure: false, // true for 465, false for other ports
    auth: {
      user: process.env.SMTP_USERNAME, // generated ethereal user
      pass: process.env.SMTP_PASSWORD, // generated ethereal password
    },
  });
  try {
    let info = await transporter.sendMail({
      from: process.env.SMTP_FROM_MAIL, // sender address
      to: to, // list of receivers
      subject: subject, // Subject line
      html: html, // html body
    });
    return OTP;
  } catch (error) {
    console.log(error);
    return false;
  }
}

export async function sendVerifyOTPMail(email) {
  let data = {};
  data.otp = Math.floor(1000 + Math.random() * 9000);
  //data.otp = 1234;
  let options = {};
  let subject = "Java Go - OTP Verification";
  let html = await ejs.renderFile(
    "./views/verify_otp.ejs",
    {
      data: data,
    },
    options
  );
  await sendMail(email, subject, html, data.otp);
  return data.otp;
}

export async function sendResetPasswordMail(name, email, token, user_type) {
try{
  let data = {};
  data.name = name;
  //const baseUrl = process.env.APP_URL || "https://square.javaapp.co.uk";
  //data.password_reset_link = `${baseUrl}/reset-password?token=${token}&type=${user_type}`;
  //data.password_reset_link = process.env.RESET_PASSWORD_LINK;
  data.temporaryPassword = await randomString();
  let options = {};
  let html = await ejs.renderFile(
    "./views/forgotten_password.ejs",
    {
      data: data,
    },
    options
  );
  let subject = "Java Go - Password Reset Request";
  const mailSent = await sendMail(email, subject, html, token, user_type);
if (mailSent) {
let userDetails = await User.findOne({
where: {
      email: email,
    }
});
const salt = await bcrypt.genSalt(10);
        const password = await bcrypt.hash(data.temporaryPassword, 10);
        await authService.updateUser(
          { password: password },
          userDetails.id
        );
}
  return token;
}catch (error) {
	console.log(error);
    return res.status(500).send({
      status: 500,
      message: messages.something_went_wrong,
      error: error,
    });
  }}

export async function sendCafeRequestMail(requestData) {
  let data = {
    email: requestData.email,
    cafe_name: requestData.cafe_name,
    phone: requestData.phone_number,
    postcode: requestData.postcode,
    website: requestData.website,
  };
  let options = {};
  let subject = "Cafe Request";
  let html = await ejs.renderFile(
    "./views/request_cafe.ejs",
    {
      data: data,
    },
    options
  );
  await sendMail("javago@javaapp.co.uk", subject, html);
  return data.otp;
}

export async function sendCafeRequestMailOld(email, cafe_name, password) {
  let data = {
    email: email,
    cafe_name: cafe_name,
    password: password,
    link: process.env.CAFE_PANEL_LOGIN_LINK,
  };
  let options = {};
  let subject = "Welcome to Java Go";
  let html = await ejs.renderFile(
    "./views/request_cafe.ejs",
    {
      data: data,
    },
    options
  );
  await sendMail(email, subject, html);
  return data.otp;
}

export async function randomString() {
  var chars =
    "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@#!&*";
  var length = 8;
  var result = "";
  for (var i = length; i > 0; --i)
    result += chars[Math.floor(Math.random() * chars.length)];
  return result;
}