Răsfoiți Sursa

Create route for sending reset email to user.

Lee Morgan 5 ani în urmă
părinte
comite
ac984d97a6

+ 2 - 2
controllers/emailVerification.js

@@ -1,7 +1,7 @@
 const Merchant = require("../models/merchant.js");
 
 const mailgun = require("mailgun-js")({apiKey: process.env.MG_SUBLINE_APIKEY, domain: "mail.thesubline.net"});
-const VerifyEmail = require("../emails/verifyEmail.js");
+const verifyEmail = require("../emails/verifyEmail.js");
 
 module.exports = {
     sendVerifyEmail: function(req, res){
@@ -11,7 +11,7 @@ module.exports = {
                     from: "The Subline <clientsupport@thesubline.net>",
                     to: merchant.email,
                     subject: "Email verification",
-                    html: VerifyEmail({
+                    html: verifyEmail({
                         name: merchant.name,
                         link: `${process.env.SITE}/verify/${merchant._id}`,
                         code: merchant.verifyId

+ 46 - 0
controllers/passwordReset.js

@@ -1,5 +1,51 @@
+const Merchant = require("../models/merchant.js");
+
+const helper = require("./helper.js");
+const mailgun = require("mailgun-js")({apiKey: process.env.MG_SUBLINE_APIKEY, domain: "mail.thesubline.net"});
+const passwordReset = require("../emails/passwordReset.js");
+
 module.exports = {
     enterEmail: function(req, res){
         return res.render("passwordResetPages/email");
+    },
+
+    generateCode: function(req, res){
+        Merchant.findOne({email: req.body.email})
+            .then((merchant)=>{
+                if(merchant === null){
+                    req.session.error = "USER WITH THIS EMAIL DOES NOT EXIST";
+                    return res.redirect("/");
+                }
+
+                merchant.verifyId = helper.generateId(15);
+                
+                const mailgunData = {
+                    from: "The Subline <clientsupport@thesusbline.net>",
+                    to: merchant.email,
+                    subject: "Password Reset",
+                    html: passwordReset({
+                        name: merchant.name,
+                        link: `${process.env.SITE}/reset/${merchant.verifyId}`
+                    })
+                };
+                mailgun.messages().send(mailgunData, (err, body)=>{
+                    console.log(err);
+                });
+
+                return merchant.save();
+            })
+            .then((merchant)=>{
+                req.session.error = "PASSWORD RESET EMAIL SENT";
+                return res.redirect("/");
+            })
+            .catch((err)=>{
+                console.log(err);
+                req.session.error = "ERROR: UNABLE TO RESET PASSWORD AT THIS TIME";
+                return res.redirect("/");
+            });
+    },
+
+    enterPassword: function(req, res){
+        return res.render("passwordResetPages/password");
     }
 }

+ 2 - 0
routes.js

@@ -70,4 +70,6 @@ module.exports = function(app){
 
     //Password reset
     app.get("/reset/email", passwordReset.enterEmail);
+    app.post("/reset/email", passwordReset.generateCode);
+    app.get("/reset/:id", passwordReset.enterPassword);
 }

+ 1 - 1
views/passwordResetPages/email.ejs

@@ -14,7 +14,7 @@
 
         <h1 class="title">Enter your email to reset your password</h1>
 
-        <form class="form" action="#" method="post">
+        <form class="form" action="/reset/email" method="post">
             <input class="email" name="email" type="email" placeholder="email">
 
             <input class="button" type="submit" value="SEND EMAIL">