Fix file paths and add password reset functionality

This commit is contained in:
newtbot
2024-01-31 03:17:24 +08:00
parent 12597ad774
commit fea986a841
12 changed files with 169 additions and 39 deletions

View File

@ -3,13 +3,17 @@ const {
loginUser,
checkEmail,
checkEmailDetails,
resetPass,
} = require("../functions/user");
const { sendContactEmail } = require("../functions/nodeMail");
const { generateUUID } = require("../functions/generateUUID");
const { addPasswordResetToken } = require("../functions/api");
const { sendResetPasswordEmail } = require("../functions/nodeMail");
const { checkTokenByrowID } = require("../functions/api");
const express = require("express");
const { render } = require("ejs");
const router = express.Router();
// /user/register
@ -91,13 +95,16 @@ router.post("/checkemail", async (req, res, next) => {
let data = await checkEmailDetails(req.body.email);
//console.log(data);
//token generation and insert into token table
const token = await generateUUID();
let token = await generateUUID();
let tokenRes = await addPasswordResetToken(data, token);
//email user with temp token link
if (!tokenRes) return false;
//apend table id to token
token = tokenRes + "-" + token;
//email logic to send reset password link
sendResetPasswordEmail(req.body.email, token);
@ -111,15 +118,33 @@ router.post("/checkemail", async (req, res, next) => {
}
});
router.get("/resetpassword/:token", async (req, res, next) => {
//pass token to reset password page
});
//reset password
router.post("/resetpassword", async (req, res, next) => {
router.post("/resetpassword/:token", async (req, res, next) => {
console.log(req.body);
console.log(req.params.token);
//if token is valid
let tokenRes = await checkTokenByrowID(req.params.token);
if (!tokenRes) {
let error = new Error("Token not found");
error.status = 400;
return next(error);
}
//token is valid and reset password
else{
let Res = await resetPass(tokenRes.userid, req.body);
if (!Res) return false;
else{
res.json({
message: "Password reset successfully",
});
tokenRes.destroy();
}
}
});
module.exports = router;

View File

@ -1,4 +1,5 @@
"use strict";
const { checkTokenByrowID } = require("../functions/api");
var router = require("express").Router();
@ -33,7 +34,7 @@ router.get("/forgotpassword", function (req, res, next) {
res.render("forgotpassword");
});
//resetted password page
//resetting password page
router.get("/resetpassword", function (req, res, next) {
res.render("resetpassword");
});
@ -63,4 +64,31 @@ router.get("/sensor-data", function (req, res, next) {
res.render("sensor-data");
});
//reset password page
router.get("/resetpassword/:token", async (req, res, next) => {
try{
//pass token to reset password page
//console.log(req.params.token);
//check if token is valid
let tokenRes = await checkTokenByrowID(req.params.token);
if (!tokenRes) {
let error = new Error("Token not found");
error.status = 400;
return next(error);
}
else {
let token = req.params.token;
console.log(token);
res.render("resetpassword", { token: token });
}
}catch(error){
console.error(error);
next(error);
}
});
module.exports = router;