Advertisement
shopnilSS

Untitled

Apr 13th, 2021
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //password change controller with old password , new password and retype password
  2. const passwordChangeController = async (req,res) => {
  3.     try{
  4.         /*
  5.             in body you have to take 3 input like
  6.             {
  7.                 oldPassword: .......(min-8),
  8.                 newPassword: ........(min-8),
  9.                 repeatPassword: ..........
  10.  
  11.             }
  12.         */
  13.         const passwordValidator = Joi.object({
  14.             newPassword: Joi.string().required().pattern(new RegExp ('^[a-zA-Z0-9]{8,30}$')),
  15.             repeatPassword: Joi.ref('newPassword'),
  16.             oldPassword: Joi.required()
  17.         })//validator the password
  18.  
  19.         const {error} = passwordValidator.validate(req.body) //get the validation
  20.         if(error){
  21.             res.json({
  22.                 message: "validation error",
  23.                 error
  24.             })
  25.         }else{
  26.  
  27.             const {id} = req.params;//get the id from params
  28.             const {oldPassword, newPassword} = req.body; //get the data from body
  29.             const user = await User.findOne(({_id:id})) //get the user here
  30.             const matchTheOldPassword = await bcrypt.compare(oldPassword, user.password) //match the old password with the existing one
  31.             if(matchTheOldPassword){
  32.                 const matchTheNewPasswordWithOldOne = await bcrypt.compare(newPassword, user.password)//check that the new input password is equal to the old one or not
  33.                 if(matchTheNewPasswordWithOldOne){
  34.  
  35.                     res.json({
  36.                         message: "You have input your old password.Please input a different password"
  37.                     })
  38.  
  39.                 }else {
  40.  
  41.                     const hash = await bcrypt.hash(newPassword, 10) //hash the new input password
  42.                     await User.findByIdAndUpdate(
  43.                         {_id : id},
  44.                         {
  45.                             $set: {
  46.                                 password: hash
  47.                             }
  48.                         }
  49.                     )//update the new password
  50.                     return res.json({
  51.                         message: "password has been changed"
  52.                     })
  53.                 }
  54.             }else {
  55.  
  56.                 res.json({
  57.                     message: "old password doesn't match"
  58.                 })
  59.             }
  60.         }
  61.     }
  62.     catch(err){
  63.         res.send(err)
  64.     }
  65. }
  66.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement