diff --git a/consumerWebsite/database/mySQL.js b/consumerWebsite/database/mySQL.js index 275674f..6bba43b 100644 --- a/consumerWebsite/database/mySQL.js +++ b/consumerWebsite/database/mySQL.js @@ -15,7 +15,7 @@ const sequelize = new Sequelize( attributeBehavior: 'escape', dialectOptions: { ssl: { - ca: fs.readFileSync(path.resolve(__dirname, '../cert/DigiCertGlobalRootCA.crt.pem')), + ca: fs.readFileSync(path.resolve(__dirname, '../cert/DigiCertGlobalRootCA.crt_3.pem')), }, }, diff --git a/consumerWebsite/functions/api.js b/consumerWebsite/functions/api.js index cdce376..d021cde 100644 --- a/consumerWebsite/functions/api.js +++ b/consumerWebsite/functions/api.js @@ -50,6 +50,21 @@ async function addToken(userId, permission, isKey ,expiry) { return token.id + "-" + uuid; } +async function addPasswordResetToken(data , token){ + let hashtoken = await hash(uuid); + let currentDate = new Date(); + let tokenToLive = new Date(currentDate.getTime() + 15 * 60000); + + let tokenRes = await tokenModel.create({ + userid: data.id, + token: hashtoken, + permission: "canRead", + isKey: "isNotKey", + expiration: tokenToLive, + }); + return true; +} + async function checkToken(id) { let tokenRes = await tokenModel.findOne( { @@ -62,4 +77,6 @@ async function checkToken(id) { return tokenRes; } -module.exports = { addToken, getTokenByToken , checkToken}; + + +module.exports = { addToken, getTokenByToken , checkToken , addPasswordResetToken}; diff --git a/consumerWebsite/functions/user.js b/consumerWebsite/functions/user.js index 987968e..90d05d2 100644 --- a/consumerWebsite/functions/user.js +++ b/consumerWebsite/functions/user.js @@ -152,6 +152,17 @@ async function checkEmail(email) { } +async function checkEmailDetails(email) { + let emailRes = await userModel.findOne({ + where: { + email: email, + }, + }); + if (!emailRes) return false; + return emailRes; + +} + module.exports = { getUserByID, @@ -159,5 +170,6 @@ module.exports = { addUser, loginUser, updateProfile, - checkEmail + checkEmail, + checkEmailDetails }; \ No newline at end of file diff --git a/consumerWebsite/public/js/app.js b/consumerWebsite/public/js/app.js index 90da0c3..32813f5 100644 --- a/consumerWebsite/public/js/app.js +++ b/consumerWebsite/public/js/app.js @@ -243,6 +243,10 @@ app.auth = (function (app) { location.replace(`/profile`); } + function checkEmailRedirect(){ + location.replace(`/checkemail`); + } + return { getToken: getToken, setToken: setToken, @@ -252,6 +256,7 @@ app.auth = (function (app) { logInRedirect, homeRedirect, profileRedirect, + checkEmailRedirect, }; })(app); @@ -279,6 +284,8 @@ function formAJAX(btn, del) { var $form = $(btn).closest("[action]"); // gets the 'form' parent var formData = $form.find("[name]").serializeObject(); // builds query formDataing var method = $form.attr("method") || "post"; + console.log("Form data", formData); + console.log("Form method", method); app.util.actionMessage("Loading...", $form, "info"); diff --git a/consumerWebsite/routes/auth.js b/consumerWebsite/routes/auth.js index 675e72d..7b28b01 100644 --- a/consumerWebsite/routes/auth.js +++ b/consumerWebsite/routes/auth.js @@ -1,5 +1,7 @@ -const { addUser, loginUser, checkEmail } = require("../functions/user"); +const { addUser, loginUser, checkEmail , checkEmailDetails } = require("../functions/user"); const { sendContactEmail } = require("../functions/nodeMail"); +const { generateUUID } = require("../functions/generateUUID"); +const { } = require("../functions/api"); const express = require("express"); const router = express.Router(); @@ -75,7 +77,7 @@ router.post("/contact", async (req, res, next) => { //reset router.post("/checkemail", async (req, res, next) => { try{ - //console.log(req.body); + let Res = await checkEmail(req.body.email); if (!Res) { let error = new Error("Email not found"); @@ -83,17 +85,38 @@ router.post("/checkemail", async (req, res, next) => { return next(error); } else{ - //console.log(Res); - send(req.body.email, req.body.name, req.body.message); + //user info lookup + let data = await checkEmailDetails(req.body.email); + //console.log(data); + //token generation and insert into token table + const token = await generateUUID(); + + let tokenRes = await addPasswordResetToken(data , token); + + //email user with temp token link + if (!tokenRes) return false; + + //email logic to send reset password link + return res.json({ message: "Reset Password Link has successfully sent to your email!", }); } + }catch (error){ console.error(error); next(error); } + }); module.exports = router; + + + /* + router.get('/login/resetpassword/:token', async function(req, res, next){ + res.render('reset_password', {}); +}); + + */ diff --git a/consumerWebsite/routes/render.js b/consumerWebsite/routes/render.js index 866a431..a892814 100644 --- a/consumerWebsite/routes/render.js +++ b/consumerWebsite/routes/render.js @@ -38,6 +38,11 @@ router.get("/resetpassword", function (req, res, next) { res.render("resetpassword"); }); +//check email page +router.get("/checkemail", function (req, res, next) { + res.render("checkemail"); +}); + //contact page router.get("/contact", function (req, res, next) { res.render("contact"); diff --git a/consumerWebsite/views/checkemail.ejs b/consumerWebsite/views/checkemail.ejs new file mode 100644 index 0000000..2ff89c4 --- /dev/null +++ b/consumerWebsite/views/checkemail.ejs @@ -0,0 +1,17 @@ +<%- include('logintop') %> + +
+