How to Create a login page with session in node js.?

Here, we will write a program to create a login page with session in node js. For this task we need to create a file called app.js where we will include all the library file and cookie sessions, which will provide functionality to our apis. Another file will be login.ejs inside the views folder which will contain the front end of our login page.

app.js file in root directory

require('dotenv').config()
const express=require("express"); 
var cookieParser = require("cookie-parser");
var session = require("express-session");

const app=express();

const router= express.Router();
const mongoose= require("mongoose");
const bodyParser=require('body-parser');
mongoose.set('strictQuery', false);
app.set('view engine','ejs');
app.use(cookieParser());
app.use(
  session({
    key: "user_sid",
    secret: "somerandonstuffs",
    resave: false,
    saveUninitialized: false,
    cookie: {
      expires: 600000,
    },
  })
);

app.use((req, res, next) => {
  if (req.cookies.user_sid && !req.session.user) {
    res.clearCookie("user_sid");
  }
  next();
});

// middleware function to check for logged-in users
var sessionChecker = (req, res, next) => {
  if (req.session.user && req.cookies.user_sid) {
    res.write('Done');
  } else {
    next();
  }
};

app.get('/',sessionChecker,(req,res)=>{
    // res.render('index');
    res.redirect("/login");
})


// api for database
app.use(bodyParser.urlencoded({extended:true}));

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

})
router.post('/login',async (req, res) => {
  var username = req.body.username,
    password = req.body.password;

    try {
      var user = await User.findOne({ username: username })
      .exec();
       if(!user) {
          res.redirect("/login");
       }
       user.comparePassword(password,(error, match) => {
           if(!match) {
             res.redirect("/login");
          }
      });
      req.session.user = user;
      res.redirect("/display");
  } catch (error) {
    console.log(error)
  }
});

app.get("/logout", (req, res) => {
  if (req.session.user && req.cookies.user_sid) {
    res.clearCookie("user_sid");
    res.redirect("/");
  } else {
    res.redirect("/login");
  }
});

  
app.use('/',router);

app.listen(5000,()=>console.log('listren on 5000'));

login.ejs in views directory

<!DOCTYPE html>
<html>
    <head><title>login</title>
       
    </head>

 <body>
<form action="/login" method="post">

<input type="text" name="username"><br><br><br>
<input type="password" name="password"><br><br><br>
<button type="submit" name="submit" value="submit">login</button>
</form>
</body>
</html>