Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module.exports.updateUser = async (req, res) => {
  2.   const { currentPassword, username, password, email, tags  } = req.body
  3.  
  4.   const user = await User.findOne({
  5.     _id: req.session.user.id
  6.   }).exec()
  7.  
  8.   if (!user) {
  9.     req.session.destroy()
  10.     return res.status(500).end()
  11.   }
  12.  
  13.   if (tags) {
  14.     user.tags = tags.push(tags)
  15.   }
  16.  
  17.   if (username) {
  18.     user.username = username
  19.  
  20.     try {
  21.       await user.save()
  22.     } catch (err) {
  23.       if (err.code === 11000) {
  24.         return res.status(400).json({
  25.           message: 'This username is already used'
  26.         })
  27.       }
  28.  
  29.       return res.status(500).json({
  30.         message: 'Could not change username'
  31.       })
  32.     }
  33.  
  34.     req.session.user.username = username
  35.   } else {
  36.     if (!(password || email)) {
  37.       return res.status(400).json({
  38.         message: 'Incomplete request'
  39.       })
  40.     }
  41.  
  42.     if (!(currentPassword && await validatePassword(currentPassword, user.password))) {
  43.       return res.status(401).json({
  44.         message: 'Invalid password'
  45.       })
  46.     }
  47.  
  48.     if (email) {
  49.       if (!validateEmail(email)) {
  50.         return res.status(400).json({
  51.           message: 'Email must be valid'
  52.         })
  53.       }
  54.  
  55.       user.email = email
  56.       user.isVerified = false
  57.  
  58.       try {
  59.         await user.save()
  60.  
  61.         if (!config.skipEmailVerification) {
  62.           mailer.sendVerificationEmail(user.username, email)
  63.         }
  64.       } catch (err) {
  65.         if (err.code === 11000) {
  66.           return res.status(400).json({
  67.             message: 'This email is already used'
  68.           })
  69.         }
  70.  
  71.         return res.status(500).json({
  72.           message: 'Could not change email'
  73.         })
  74.       }
  75.     } else if (password) {
  76.       user.password = password
  77.  
  78.       try {
  79.         await user.save()
  80.       } catch (err) {
  81.         res.status(500).json({
  82.           message: 'Could not update password'
  83.         })
  84.       }
  85.     }
  86.   }
  87.  
  88.   res.status(200).end()
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement