const bcrypt = require("bcryptjs"); const User = require("../models/User"); const Student = require("../models/Student"); const jwt = require("jsonwebtoken"); const JWT_secret = "Cantileverlabs"; const messagebird = require("messagebird")("llVKD53ve6QRpbCKOHzWBADaS", null, [ "ENABLE_CONVERSATIONSAPI_WHATSAPP_SANDBOX", ]); const nodemailer = require("nodemailer"); const smtpTransport = require("nodemailer-smtp-transport"); // -------------------------------------------- mail transporter ----------------------------------------- var transport = nodemailer.createTransport( smtpTransport({ host: "email-smtp.us-east-1.amazonaws.com", //`${process.env.HOST}` port: 465, auth: { user: "AKIA2G7743RRTZMVXE3X", //`${process.env.EMAIL}` pass: "BJSjV3jArJfsnk1LhFc/hUmisEyEtbLNGgrRbv0noh8c", //`${process.env.PASS}` }, }) ); // -------------------------------------------- mail transporter ----------------------------------------- module.exports.Protected = async (req, res, next) => { res.send("Hello User"); }; module.exports.postSignup = async (req, res, next) => { try { //we need firstName , lastName , email , password as input let firstName = req.body.firstName || " "; let lastName = req.body.lastName || " "; const { sending_company_email, email, password, subject, _html } = req.body; let user = await User.findOne({ email: email }); if (user) { res.json({ message: "User already exist", type: "error", }); } else { const email_otp = Math.floor(100000 + Math.random() * 900000); console.log("otp", email_otp); const hashedPass = await bcrypt.hash(password, 12); user = new User({ firstName: firstName, lastName: lastName, email: email, password: hashedPass, isAdmin: false, email_otp, }); user = await user.save(); await Student.deleteOne({ user: user._id }); let student = new Student({ user: user._id, }); student = await student.save(); user.student = student._id; await user.save(); const message = { from: `${sending_company_email}`, // Sender address to: `${email}`, // List of recipients subject: `${subject}`, // Subject line html: `${_html}`, // design html for email message. }; transport.sendMail(message, function (err, info) { if (err) { console.log(err); } else { console.log(info); } }); res.json({ message: "OTP has sent to the Email", type: "success", }); } } catch (err) { console.log(err); } }; module.exports.verfiyemail = async (req, res, next) => { const { email, otp } = req.body; try { let user = await User.findOne({ email: email }); if (user) { const isMatched = await (user.email_otp == otp ? true : false); if (isMatched) { if (!user.isVerified) { user.isVerified = true; await user.save(); res.json({ message: "User Verified, Please Login", }); } else { res.json({ message: "User Already Verified, Please Login", }); } } else { res.json({ message: "OTP Doesn't Matched!", type: "error", }); } } else { res.json({ message: "No user with this email exists", type: "error", }); } } catch { (err) => { console.log(err); }; } }; module.exports.postSignin = async (req, res, next) => { try { //we need email and password as input let email = req.body.email; let password = req.body.password; let user = await User.findOne({ email: email }); if (user) { const isMatched = await bcrypt.compare(password, user.password); if (isMatched) { const token = jwt.sign({ _id: user._id }, JWT_secret); res.json({ token: token, }); } else { res.json({ message: "email and password doesn't match", type: "error", }); } } else { res.json({ message: "No user with this email exists", type: "error", }); } } catch (err) { console.log(err); } }; // Phone verification Starts. // ----------------------------------------------------------------------------------------------- module.exports.sendOTP = (req, res, next) => { //uNNYosMopvvCW9RTR1tRWJmYC test //llVKD53ve6QRpbCKOHzWBADaS live const { phoneNumber } = req.body; try { if (!phoneNumber) { res.status(422).json({ message: "Please Add All Required Fields" }); return; } else { messagebird.verify.create( phoneNumber, { template: "Your verification code is %token", }, function (err, response) { if (err) { console.log(err); res.status(422).json({ message: err.errors[0].description }); } else { console.log(response); res.json({ id: response.id }); } } ); } } catch (err) { console.log(err); } }; module.exports.getOTP = (req, res, next) => { try { const { id, otp } = req.body; messagebird.verify.verify(id, otp, function (err, response) { if (err) { console.log({ error: err.errors[0].description, id: id }); res.json({ error: err.errors[0].description, id: id }); } else { console.log(response); res.json({ message: "Code Verified" }); } }); } catch (err) { console.log(err); } }; // Phone verification End. // ----------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------- // Forgot password Starts module.exports.forgotpassword = async (req, res, next) => { const { email, link, sending_company_email, subject } = req.body; //link = https://cantileverlabs.herokuapp.com/resetpassword/:id/:token try { await User.findOne({ email }).then((user) => { if (!user) { res.status(404).json({ error: "User not found with this Email" }); return; } else { const payload = { email: user.email, _id: user._id, }; const secret = JWT_secret + user.password; const token = jwt.sign(payload, secret, { expiresIn: "10m" }); User.findByIdAndUpdate(user._id, { $set: { passwordResetToken: token }, }) .then((data) => { const reset_link = `${link}/${user._id}/${token}`; const message = { from: `${sending_company_email}`, // Sender address to: `${user.email}`, // List of recipients subject: `${subject}`, // Subject line html: `
We got a request to reset your Password. No need to worry you can reset your Password by clicking the Reset Button.
Facing any other issue write us at info@cantileverlabs.com
Privacy Policy | Terms of Use | Contact us