Может кто-нибудь сказать мне, где я могу написать свою функцию bcrypt-hashing? - PullRequest
0 голосов
/ 22 апреля 2020
exports.postLogin = (req, res) => {
  let { email, pass } = req.body;
  console.log(email);

  User.findOne({ email }, (err, result) => {
    console.log(email, pass, result.pass);
    if (err) {
      res.json({ status: 'failed', message: err });
    } else if (!result) {
      res.json({ status: 'failed', message: 'email or password are wrong' });
    } else {
      bcrypt.compare(pass, result.pass).then(async (isPassCorrect) => {
        if (isPassCorrect) {
          const token = await signToken(result.id);
          res.json({
            status: 'success',
            message: 'you logged in !!',
            token,
          });
        } else res.json({ status: 'failed', message: 'email or password are wrong!' });
      });
    }
  });
};

1 Ответ

0 голосов
/ 22 апреля 2020

Ваш вопрос не совсем ясен о том, что вы пытаетесь сделать, поэтому я угадываю в черном.

Если я вас правильно понял, вы ищете правильное место, чтобы иметь sh пароль перед его сохранением, поэтому вы можете использовать bcrypt.compare() в зашифрованном пароле, верно?

Если да, вы можете использовать mongooses pre -hook, чтобы получить sh пароль до пн goose на самом деле сохраняет документ. Для этого sh добавьте это в файл модели

User.pre('save', async function (next) {
    await bcrypt.genSalt(12).then(async salt => {
        this.password = await bcrypt.hash(this.password, salt).catch(err => {
            return next(err)
        })
      }).catch(err => {
          return next(err)
    })
})
...