'error 404 while authenticating with passport js local

Really stuck on the same issue for much time. Tried many things but all to no use. Please help. The register module works fine but the login doesn't. It returns 404 error upon hitting submit button. Attached are the appropriate code documents. The login module is supposed to redirect to contactlist upon successful authentication.

Thank you very much!.

app.js

    let createError = require('http-errors');
    let express = require('express');
    let path = require('path');
    let cookieParser = require('cookie-parser');
    let logger = require('morgan');
    var bodyParser = require('body-parser');
    
    
    let Login = require('../models/login')
    
    let passport = require('passport');
    let LocalStrategy = require('passport-local').Strategy;
    
    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); }
          if (!user.verifyPassword(password)) { return done(null, false); }
          return done(null, user);
        });
      }
    ));
    
    //database setup
    let mongoose = require('mongoose');
    let DB = require('./db');
    
    //point mongoose to the db URI
    mongoose.connect(DB.URI);
    
    let mongoDB = mongoose.connection;
    mongoDB.on('error',console.error.bind(console,'Connection Error in Mongo'));
    mongoDB.once('open',()=>{
      console.log("Connected to MongoDB");
    })
    
    let indexRouter = require('../routes/index');
    let usersRouter = require('../routes/users');
    let loginRouter = require('../routes/login');
    let authRouter = require('../routes/auth');
    const exp = require('constants');
    
    let app = express();
    
    // view engine setup
    app.set('views', path.join(__dirname, '../views'));
    app.set('view engine', 'ejs');
    app.use(bodyParser.json());
    
    app.use(logger('dev'));
    app.use(express.json());
    app.use(express.urlencoded({ extended: false }));
    app.use(cookieParser());
    app.use(require('express-session')({
      secret: 'keyboard cat',
      resave: false,
      saveUninitialized: false
    }));
    
    app.use(express.static(path.join(__dirname, '../../public')));
    app.use(express.static(path.join(__dirname,'../../node_modules')));
    
    app.use(passport.initialize());
    app.use(passport.session());
    
    
    
    app.use('/', indexRouter);
    app.use('/users', usersRouter);
    app.use('/login', loginRouter);
    app.use('/', authRouter);
    
    // passport config
    passport.serializeUser(Login.serializeUser());
    passport.deserializeUser(Login.deserializeUser());
    
    // catch 404 and forward to error handler
    app.use(function(req, res, next) {
      next(createError(404));
    });
    
    // error handler
    app.use(function(err, req, res, next) {
      // set locals, only providing error in development
      res.locals.message = err.message;
      res.locals.error = req.app.get('env') === 'development' ? err : {};
    
      // render the error page
      res.status(err.status || 500);
      res.render('error',{ title: 'error' });
    });
    
    module.exports = app;
    

auth.js

    let express = require('express');
    let router = express.Router();
    let passport = require('passport');
    let user = require('../models/user');
    
    
    
      router.post('/register',(req,res,next)=>{
        user.register(new user({
          username:req.body.username,
        }),
        req.body.password,(err, newUser) =>{
          if(err){
            return res.redirect('/login/register')
          }
          else{
            req.login(newUser,(err) => {
              res.redirect('/login/contactlist')
            })
          }
        }
        )
      });
    
      router.post('/', passport.authenticate('local', { failureRedirect: '/login/contactlist' }),
        function(req, res) {
          res.redirect('/login/contactlist');
      });
    
    
    module.exports = router;

login.js

let express = require('express');
let router = express.Router();

let passport = require('passport');

/* GET index page. */
let Login = require('../models/login')
let Contact = require('../models/contact')

router.get('/', function(req, res, next) {
  Login.find((err,loginList)=>{
    if(err){
      return console.error(err);
    }
    else {
      //console.log(loginList);
      res.render('login/login', { title: 'Login',loginList: loginList,user: req.user });
    }
  });
});

router.get('/register', function(req, res, next) {
  res.render('login/register')
});

/* GET contactlist page. */
router.get('/contactlist', function(req, res, next) {
  Contact.find((err,contactList)=>{
    if(err){
      return console.error(err);
    }
    else {
      res.render('login/contactlist', { title: 'contactlist',contactList: contactList });
    }
  });
});

/* GET update page. */
router.get('/update/:id', function(req, res, next) {
  let id = req.params.id;

  Contact.findById(id, (err, contactToEdit) => {
      if(err)
      {
          console.log(err);
          res.end(err);
      }
      else
      {
          //show the edit view
          res.render('login/update', {title: 'Update', contact:contactToEdit })
      }
  });
});

router.get('/delete/:id', function(req, res, next) {
  let id = req.params.id;

  Contact.remove({_id: id}, (err) => {
    if(err)
    {
        console.log(err);
        res.end(err);
    }
    else
    {
         // refresh the contacts list
         res.redirect('/login/contactlist');
    }
});
});


/* POST update page. */
router.post('/update/:id', function(req, res, next) {
  let id = req.params.id
  let newContact = Contact({
    "_id":id,
    "email":req.body.email,
    "number": req.body.number,
    "name":req.body.name
  });
  Contact.updateOne({_id: id},newContact,(err)=>{
    console.log(newContact);
    if(err){
      
      console.log(err);
      res.end(err);
    }
    else{
      console.log(id)
      console.log("POST update");
      res.redirect('/login');
    }
  });
});
/* POST contactlist page. */
router.post('/contactlist', function(req, res, next) {
  res.render('login/contactlist', { title: 'contactlist' });
});


module.exports = router;


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source