Quantcast
Channel: Active questions tagged javascript - Stack Overflow
Viewing all articles
Browse latest Browse all 140734

How to flash a user's username after a successful login using Passport.js?

$
0
0

I am trying to flash the message "Welcome back "username here"" to a user once they have successuly logged in to the website.

The problem is that logging in with passport is not a regular request and response, the authentication happens as an argument to the post request. Below you can find my code:

var express = require("express");
var router = express.Router();
var user = require("../models/user");
var passport = require("passport");

router.get('/register', (req,res) =>{
    res.render('register');
});

router.post('/register', (req,res) =>{
    user.register(
        new user({username: req.body.username}),
        req.body.password,
        (err, newUser) => {
            if(err){
                req.flash("error", err.message);
                return res.redirect("/register");
            }
            passport.authenticate("local")(req, res, function(){
                req.flash("success", "Successfully registered, welcome "+user.username.charAt(0).toUpperCase() + user.username.slice(1)+"!");
                res.redirect("/");
            });
        }
    );
});

router.get('/login', (req,res) =>{
    res.render('login');
});

router.post('/login', passport.authenticate("local",{
    successRedirect: "/",
    failureRedirect: "/login",
    failureFlash: true,
    successFlash: 'Welcome back!'//HERE IS WHERE I AM INTERESTED
}), (req,res) =>{
});

router.get('/logout', (req,res) =>{
    req.logout();
    req.flash("success", "Successfully Logged Out")
    res.redirect("/");
});

module.exports = router;

Viewing all articles
Browse latest Browse all 140734

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>