1

I am trying to get flash working with my handlebars templates, but it doesn't work. How can I display messages

if (!user) return done(null, false, { message: 'No user found'})

and

return done(null, false, { message: 'Oops! Wrong password.'})

in the alert box?

Installed packages: express, connect-flash, express-handlebars, passport, passport-local, express-session, connect-mongo

app.use(flash())

passport.use(new LocalStrategy(function(username, password, done) {
  User.findOne({ username: username }, function(err, user) {
    if (err) return done(err)
      if (!user) return done(null, false, { message: 'No user found'})
        user.comparePassword(password, function(err, isMatch) {
          if (isMatch) {
            return done(null, user)
          } else {
            return done(null, false, { message: 'Oops! Wrong password.'})
          }
        })
    })
}))

app.post('/login', passport.authenticate('local', {
    successRedirect: '/',
    failureRedirect: '/login',
    failureFlash: true
}))

Handlebars template:

{{#if message}}
<div class="alert alert-danger">{{message}}</div>
{{/if}}
Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343
Engo
  • 899
  • 3
  • 19
  • 49

1 Answers1

3
app.get('/login', function(req, res) {
    res.locals.message = req.flash('message');
    res.render('login');
});