Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
resetPassword.js 994 B
const { services } = require('pubsweet-component-helper-service')

module.exports = models => async (req, res) => {
  const { email, password, token } = req.body
  if (!services.checkForUndefinedParams(email, password, token))
    return res.status(400).json({ error: 'missing required params' })

  if (password.length < 7)
    return res
      .status(400)
      .json({ error: 'password needs to be at least 7 characters long' })

  const validateResponse = await services.validateEmailAndToken({
    email,
    token,
    userModel: models.User,
  })

  if (validateResponse.success === false)
    return res
      .status(validateResponse.status)
      .json({ error: validateResponse.message })

  let { user } = validateResponse

  req.body.isConfirmed = true
  req.body.isActive = true
  delete user.passwordResetToken
  delete user.passwordResetTimestamp
  delete req.body.token
  user = await user.updateProperties(req.body)

  user = await user.save()
  res.status(200).json(user)
}