I am trying to get the current logged in user in my express and mongoose app. I have authenticated it with passport but am unable to get the current username. I have tried calling it from the model but is returned by a null value, can someone help me with this? Thanks.
models/User.js
const mongoose = require("mongoose");
const passportLocalMongoose = require("passport-local-mongoose");
const UserSchema = new mongoose.Schema({
username:String,
password:String
}) ;
UserSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model("User",UserSchema);
app.js
const express = require('express'),
app = express(),
mongoose = require("mongoose"),
passport = require("passport"),
bodyParser = require("body-parser"),
LocalStrategy = require("passport-local"),
passportLocalMongoose = require("passport-local-mongoose"),
User = require("./models/user");
//Connecting database
mongoose.connect("mongodb://localhost/auth_demo");
app.use(require("express-session")({
secret:"Any normal Word", //decode or encode session
resave: false,
saveUninitialized:false
}));
passport.serializeUser(User.serializeUser()); //session encoding
passport.deserializeUser(User.deserializeUser()); //session decoding
passport.use(new LocalStrategy(User.authenticate()));
app.set("view engine","ejs");
app.use(bodyParser.urlencoded(
{ extended:true }
))
app.use(passport.initialize());
app.use(passport.session());
...
app.get("/userprofile",isLoggedIn ,(req,res) =>{
res.render("userprofile", {name: User.username});
})
...
app.listen(process.env.PORT ||3000,function (err) {
if(err){
console.log(err);
}else {
console.log("Server Started At Port 3000");
}
});
userprofile.ejs
<h1>
User Profile
</h1>
<p>
<%= name %>
After Login the user will reach here.
</p>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/logout">Logout</a></li>
</ul>