ユーザーパスワード(bcryptでハッシュ)を更新するだけのアプリケーションでは、パスワードを忘れた機能を作成しています。しかし、私はこれまでに持っているコードをユーザが存在しないかどうかをどのように表示するのか分かりません。私はそれを記録する方法を知っていて、成功のためにはreq.flashに精通していますが、ユーザーが存在しない場合、req.flashに設定する条件はわかりません。ここでユーザーが表示されないようにする方法
は私のコードです:
ルート/ユーザー:
var express = require('express');
var router = express.Router();
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var User = require('../models/user');
router.post('/forgot', function(req, res){
var username = req.body.username;
var password = req.body.password;
var password2 = req.body.password2;
// Validation
req.checkBody('username', 'Username is required').notEmpty();
req.checkBody('password', 'Password is required').notEmpty();
req.checkBody('password2', 'Passwords do not match').equals(req.body.password);
var errors = req.validationErrors();
if(errors){
res.render('forgot',{
errors:errors
});
}
else {
User.changePassword(username, password);
req.flash('success_msg', 'Your password has been reset. Please login.');
res.redirect('/users/login');
}
});
module.exports = router;
user.jsの:
module.exports.changePassword = function(username, newPassword, callback) {
var query = {username: username};
User.findOne(query, function (err, userToChange, callback){
if (err) {
throw err;
}
if (userToChange) {
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash(newPassword, salt, function(err, hash) {
userToChange.password = hash;
userToChange.save(callback);
});
});
}
else{
console.log('NO USER');
return req.flash('error_msg', 'User not found');
}
});
}
ユーザーならば、私は私のUser.changepasswordからブール変数を返すようにしようとしましたこれらのブール値を使ってルートページに条件を設定しますが、返すものはすべて定義されていません。手伝ってくれませんか?
ok私はちょうど編集を見ました、ありがとうございます –
どこでユーザー名とパスワードを渡すのですか? –
最初の行を 'module.exports.changePassword =(username、password、password2、req、res)=> {' –