Added forgot pass

This commit is contained in:
yashrajverma 2021-05-12 14:46:11 +05:30
parent 1a53c17cb1
commit f9a018de8d
4 changed files with 100 additions and 127 deletions

44
app.js
View File

@ -1,4 +1,3 @@
const express = require("express"); const express = require("express");
const mongoose = require("mongoose"); const mongoose = require("mongoose");
const bodyparser = require("body-parser"); const bodyparser = require("body-parser");
@ -6,25 +5,13 @@ const authRoute = require("./routes/auth");
const profileRoute = require("./routes/profile"); const profileRoute = require("./routes/profile");
const paymentRoute = require("./routes/payment"); const paymentRoute = require("./routes/payment");
const courseRoute = require("./routes/course"); const courseRoute = require("./routes/course");
const couponRoute = require("./routes/Coupon");
const queryRoute = require("./routes/query");
const adminRoute = require("./routes/admin"); const adminRoute = require("./routes/admin");
const port = process.env.PORT || 5000; const port = process.env.PORT || 5000;
const cors = require("cors"); const cors = require("cors");
const express = require('express') ;
const mongoose = require('mongoose') ;
const bodyparser = require('body-parser') ;
const authRoute = require('./routes/auth') ;
const profileRoute = require('./routes/profile') ;
const paymentRoute = require('./routes/payment') ;
const courseRoute = require('./routes/course') ;
const adminRoute = require('./routes/admin') ;
const couponRoute = require('./routes/Coupon') ;
const queryRoute = require('./routes/query') ;
const port=process.env.PORT || 5000;
const cors = require('cors') ;
//const passport = require('passport'); //const passport = require('passport');
//const cookieSession = require('cookie-session') ; //const cookieSession = require('cookie-session') ;
//require('./passport-setup') ; //require('./passport-setup') ;
@ -90,18 +77,6 @@ require("./models/Coupon");
// req.logout() ; // req.logout() ;
// res.redirect('/') ; // res.redirect('/') ;
// }) // })
app.use(require("./routes/Coupon"));
app.use(authRoute);
app.use(profileRoute);
app.use(paymentRoute);
app.use(courseRoute);
app.use(adminRoute);
mongoose mongoose
.connect(MONGO_URI, { .connect(MONGO_URI, {
useNewUrlParser: true, useNewUrlParser: true,
@ -115,8 +90,8 @@ mongoose
}); });
}) })
.catch((err) => { .catch((err) => {
console.log(err);
});
app.use(authRoute); app.use(authRoute);
app.use(profileRoute); app.use(profileRoute);
@ -130,14 +105,3 @@ app.use(adminRoute) ;
app.use(couponRoute); app.use(couponRoute);
app.use(queryRoute); app.use(queryRoute);
mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true ,useFindAndModify:false}).
then(result => {
console.log('connected');
app.listen(port,()=>{
console.log("server is running on port",port);
}) ;
})
.catch(err => {
console.log(err);
});

View File

@ -126,56 +126,76 @@ module.exports.getOTP = (req, res, next) => {
}; };
module.exports.forgotpassword = async (req, res, next) => { module.exports.forgotpassword = async (req, res, next) => {
const { email, link } = req.body; //link = https://cantileverlabs.herokuapp.com/resetpassword/:id/:token const { email, link } = req.body; //link = https://cantileverlabs.herokuapp.com/resetpassword/:id/:token
User.findOne({ email }) try {
.then((result) => { await User.findOne({ email }).then((user) => {
if (!result) { console.log("user before", user);
if (!user) {
res.status(404).json({ error: "User not found with this Email" }); res.status(404).json({ error: "User not found with this Email" });
return; return;
} else { } else {
const payload = { const payload = {
email: result.email, email: user.email,
_id: result._id, _id: user._id,
}; };
const secret = JWT_secret + result.password; const secret = JWT_secret + user.password;
const token = jwt.sign(payload, secret, { expiresIn: "10m" }); const token = jwt.sign(payload, secret, { expiresIn: "10m" });
const user_token = new User({ User.findByIdAndUpdate(user._id, {
passwordResetToken: token, $set: { passwordResetToken: token },
})
.then((data) => {
const reset_link = `${link}/${user._id}/${token}`;
res.status(200).json({
message: "Token Saved and link is active for 10 mins",
reset_link,
}); });
user_token.save();
const reset_link = `${link}/${result._id}/${token}`;
res
.status(200)
.json({ reset_link, message: "link is active for 10 mins" });
}
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);
}); });
console.log("user after", user);
}
});
} catch {
(error) => {
console.log("Error from forgot pass", error);
};
}
//verify email then set password. //verify email then set password.
}; };
module.exports.resetpassword = async (req, res, next) => { module.exports.resetpassword = async (req, res, next) => {
const { _id, token } = req.params; const { _id, token } = req.params;
const { password } = req.body; const { password } = req.body;
await User.findById({ _id }).then((result) => { try {
if (result) { let user = await User.findById({ _id });
const secret = JWT_secret + result.password; if (!user) {
const user_token = User.findOne({ res.json({ error: "User not Found or WrongId" });
passwordResetToken: result.passwordResetToken, return;
}); } else {
const secret = JWT_secret + user.password;
const user_token = user.passwordResetToken;
const payload = jwt.verify(token, secret); const payload = jwt.verify(token, secret);
const hashedPass = await bcrypt.hash(password, 12);
if (token == user_token) { if (token == user_token) {
User.findByIdAndUpdate(_id, { $set: { password } }) user.password = hashedPass;
.then((data) => { await user
.save()
.then((ok) => {
res.json({ message: "Password Updated!" }); res.json({ message: "Password Updated!" });
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log("Error in save", err);
}); });
} else { } else {
res.status(422).json({ error: "some error occured" }); res.status(422).json({ error: "Either Token not found or Expired!" });
return;
} }
} }
}); } catch {
(err) => {
console.log("error from try catch resetpass", err);
};
}
}; };
module.exports.checkProtected = (req, res, next) => { module.exports.checkProtected = (req, res, next) => {

View File

@ -1,29 +1,21 @@
const mongoose=require('mongoose') const mongoose = require("mongoose");
const CouponSchema = new mongoose.Schema({ const CouponSchema = new mongoose.Schema({
coupon_code:{
couponCode: { couponCode: {
type: String, type: String,
required:true required: true,
}, },
percentage: { percentage: {
type: String, type: String,
required:true required: true,
}, },
remainingTimes: { remainingTimes: {
type:Number
type: Number, type: Number,
required:true required: true,
}, },
numAllowed: { numAllowed: {
type: Number, type: Number,
required:true required: true,
},
});
} module.exports = mongoose.model("Coupon", CouponSchema);
})
module.exports = mongoose.model('Coupon' , CouponSchema) ;

View File

@ -1,31 +1,28 @@
const express = require("express"); const express = require("express");
const couponController = require('../controllers/coupon') ; const couponController = require("../controllers/coupon");
const isAuth = require('../middleware/requirelogin') ; const isAuth = require("../middleware/requirelogin");
const isAdmin = require('../middleware/isAdmin') ; const isAdmin = require("../middleware/isAdmin");
const router = express.Router(); const router = express.Router();
router.post("/set-coupon", (req, res) => { router.post("/set-coupon", (req, res) => {
const { percentage, coupon_code, remainingTimes } = req.body; const { percentage, coupon_code, remainingTimes } = req.body;
if (!coupon_code || !percentage || !remainingTimes) { if (!coupon_code || !percentage || !remainingTimes) {
return res.status(422).json({error:"Add all fields"}) return res.status(422).json({ error: "Add all fields" });
} else { } else {
const coupon = new Coupon({ const coupon = new Coupon({
coupon_code, coupon_code,
percentage, percentage,
remainingTimes remainingTimes,
}); });
coupon.save().then((result) => { coupon.save().then((result) => {
res.status(200).json({ message: "Coupon set Successfully" }); res.status(200).json({ message: "Coupon set Successfully" });
}); });
} }
}); });
=======
router.get("/getAllCoupons", isAuth, isAdmin, couponController.getAllCoupons); router.get("/getAllCoupons", isAuth, isAdmin, couponController.getAllCoupons);
router.post("/addCoupon", isAuth, isAdmin, couponController.addCoupon); router.post("/addCoupon", isAuth, isAdmin, couponController.addCoupon);
router.post("/deleteCoupon", isAuth, isAdmin, couponController.deleteCoupon); router.post("/deleteCoupon", isAuth, isAdmin, couponController.deleteCoupon);