diff --git a/.history/controllers/auth_20210519123339.js b/.history/controllers/auth_20210519123339.js
new file mode 100644
index 0000000..675a180
--- /dev/null
+++ b/.history/controllers/auth_20210519123339.js
@@ -0,0 +1,405 @@
+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: `${process.env.HOST}`, //`${process.env.HOST}`
+ port: 465,
+ auth: {
+ user: `${process.env.EMAIL}`, //`${process.env.EMAIL}`
+ pass: `${process.env.PASS}`, //`${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 } = 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: '', // design html for email message.
+ // };
+ // transport.sendMail(message, function (err, info) {
+ // if (err) {
+ // console.log(err);
+ // } else {
+ // console.log(info);
+ // }
+ // });
+ res.json({
+ message: "You Are Registered, Please Login",
+ 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: `
+
+
+
+
+
+ Reset Password Email Template
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+ You have
+ requested to reset your password
+
+
+ We cannot simply send you your old password. A unique link to reset your
+ password has been generated for you. To reset your password, click the
+ following link and follow the instructions.
+
+ Reset
+ Password
+
+
+ Facing any issue? Write us at
+ info@cantileverlabs.com
+
+
+
+ Privacy Policy
+Terms Of Use
+Contact Us
+
+
+ |
+
+
+ |
+
+
+ |
+
+ |
+
+
+
+
+ 
+ copyright 2018 Cantilever Labs
+
+ |
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+ `, // design html for email message.
+ };
+ transport.sendMail(message, function (err, info) {
+ if (err) {
+ console.log(err);
+ } else {
+ console.log(info);
+ }
+ });
+ res.status(200).json({
+ message: "Link is Active for 10 mins",
+ reset_link,
+ });
+ })
+ .catch((err) => {
+ console.log(err);
+ });
+ }
+ });
+ } catch {
+ (error) => {
+ console.log("Error from forgot pass", error);
+ };
+ }
+};
+module.exports.resetpassword = async (req, res, next) => {
+ const { _id, token } = req.params;
+ const { password } = req.body;
+ try {
+ let user = await User.findById({ _id });
+ if (!user) {
+ res.json({ error: "User not Found or WrongId" });
+ return;
+ } else {
+ const secret = JWT_secret + user.password;
+ const user_token = user.passwordResetToken;
+ const payload = jwt.verify(token, secret);
+ const hashedPass = await bcrypt.hash(password, 12);
+ if (token == user_token) {
+ user.password = hashedPass;
+ await user
+ .save()
+ .then((ok) => {
+ res.header("Access-Control-Allow-Origin", "*");
+ res.header("Access-Control-Allow-Headers", "*");
+ res.json({ message: "Password Updated!" });
+ })
+ .catch((err) => {
+ console.log("Error in save", err);
+ });
+ } else {
+ res.status(422).json({ error: "Either Token not found or Expired!" });
+ return;
+ }
+ }
+ } catch {
+ (err) => {
+ console.log("error from try catch resetpass", err);
+ };
+ }
+};
+
+// Forgot password Ends
+
+// Email verification Ends
+
+// -----------------------------------------------------------------------------------------------
+
+module.exports.checkProtected = (req, res, next) => {
+ console.log(req.user);
+ res.json({
+ message: "Protected",
+ user: req.user,
+ });
+};
diff --git a/controllers/auth.js b/controllers/auth.js
index 833b8f3..675a180 100644
--- a/controllers/auth.js
+++ b/controllers/auth.js
@@ -13,11 +13,11 @@ const smtpTransport = require("nodemailer-smtp-transport");
var transport = nodemailer.createTransport(
smtpTransport({
- host: `email-smtp.us-east-1.amazonaws.com`, //`${process.env.HOST}`
+ host: `${process.env.HOST}`, //`${process.env.HOST}`
port: 465,
auth: {
- user: `AKIA2G7743RRTZMVXE3X`, //`${process.env.EMAIL}`
- pass: `BJSjV3jArJfsnk1LhFc/hUmisEyEtbLNGgrRbv0noh8c`, //`${process.env.PASS}`
+ user: `${process.env.EMAIL}`, //`${process.env.EMAIL}`
+ pass: `${process.env.PASS}`, //`${process.env.PASS}`
},
})
);