Advanced node and express: registering new users dilemma

Hey Guys I hve been trying to pass this test but always fails and give me the following error message:

You should be passing the variable "showRegistration" as true to your render function for the homepage
The profile should properly display the welcome to the user logged in

here is my server.js file:

'use strict';
const pug           = require('pug');
const express       = require('express');
const passport      = require('passport');
const bodyParser    = require('body-parser');
const session       = require('express-session');
const fccTesting    = require('./freeCodeCamp/fcctesting.js');
const mongo         = require('mongodb').MongoClient;
const routes        = require('./routes.js');
const auth          = require('./auth.js');
const GitHubStrategy = require('passport-github').Strategy;

const app = express();

fccTesting(app); //For FCC testing purposes
app.use('/public', express.static(process.cwd() + '/public'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.set('view engine', 'pug')
app.use(passport.initialize());
app.use(passport.session());
app.use(session({
  secret: process.env.SESSION_SECRET,
  resave: true,
  saveUninitialized: true,
}));

mongo.connect(process.env.DATABASE, (err, db) => {
  if(err) {
    console.log('Database error: ' + err);
  } else {
    console.log('Successful database connection');
  
  passport.use(new GitHubStrategy({
    clientID: process.env.GITHUB_CLIENT_ID,
    clientSecret: process.env.GITHUB_CLIENT_SECRET,
    callbackURL: 'https://node-express-pug-passport.glitch.me//auth/github/callback'
    },
    function(accessToken, refreshToken, profile, cb) {
        console.log(profile);
        db.collection('socialusers').findAndModify(
        {id: profile.id},
        {},
        {$setOnInsert:{
            id: profile.id,
            name: profile.displayName || 'John Doe',
            photo: profile.photos[0].value || '',
            email: profile.emails[0].value || 'No public email',
            created_on: new Date(),
            provider: profile.provider || ''
        },$set:{
            last_login: new Date()
        },$inc:{
            login_count: 1
        }},
        {upsert:true, new: true},
        (err, doc) => {
            return cb(null, doc.value);
        }
    );
    }
  ));
    
  auth(app, db);
  routes(app, db);
    
  app.get('/auth/github', passport.authenticate('github'));

  app.route('/auth/github/callback')
      .get(passport.authenticate('github', {failureRedirect: '/'}),
      (req, res) => {
        res.redirect('/profile');
    });
    
  app.use((req, res, next) => {
    res.status(404)
      .type('text')
      .send('Not Found');
  });
    
    app.listen(process.env.PORT || 3000, () => {
      console.log("Listening on port " + process.env.PORT);
    });
  }
});

here is routes.js

const passport = require('passport');
const bcrypt   = require('bcrypt');

module.exports = function (app, db) {
  
  function ensureAuthenticated(req, res, next) {
    if (req.isAuthenticated() || req.isAuthenticated) {
      console.log('Authenticated');
      return next();
    }
    console.log('not authenticated');
    res.redirect('/');
  };
  if (process.env.ENABLE_DELAYS) app.use((req, res, next) => {
  switch (req.method) {
    case 'GET':
      switch (req.url) {
        case '/logout': return setTimeout(() => next(), 500);
        case '/profile': return setTimeout(() => next(), 700);
        default: next();
      }
    break;
    case 'POST':
      switch (req.url) {
        case '/login': return setTimeout(() => next(), 900);
        default: next();
      }
    break;
    default: next();
  }
});
  
  app.route('/')
    .get((req, res) => {
    res.render(process.cwd() + '/views/pug/index', {title: 'Home Page', message: 'Please login', showLogin: true, showRegistration: true});
  });
    
  app.route('/login')
    .post(passport.authenticate('local', { failureRedirect: '/' }), (req, res) => {
    req.session.username = req.user.username;
    res.redirect('/profile')
  });
    
    app.route('/profile')
      .get(ensureAuthenticated, (req, res) => {
        const username = req.session.username;
        delete req.session.username;
        res.render(process.cwd() + '/views/pug/profile', {username: username});
    });
    
    app.route('/register')
      .post((req, res, next) => {
          db.collection('users').findOne({ username: req.body.username }, function (err, user) {
              if(err) {
                  next(err);
              } else if (user) {
                  res.redirect('/');
                console.log(user);
              } else {
                const hash = bcrypt.hashSync(req.body.password, 12);
                  db.collection('users').insertOne(
                    {username: req.body.username,
                     password: hash},
                    (err, doc) => {
                        if(err) {
                            res.redirect('/');
                        } else {
                            next(null, user);
                        }
                    }
                  );
              }
          })
      },
      passport.authenticate('local', { failureRedirect: '/' }),
        (req, res, next) => {
            req.session.username = req.user.username;
            res.redirect('/profile');
        }
    );
    
    // Github authentication
    
  
    app.route('/logout')
      .get((req, res) => {
        req.logout();
        req.session.destroy();
        res.redirect('/');
    });

}

here is auth.js

const passport       = require('passport');
const bcrypt         = require('bcrypt');
const ObjectID       = require('mongodb').ObjectID;
const LocalStrategy  = require('passport-local');

module.exports = function (app, db) {

    passport.use(new LocalStrategy(
      function(username, password, done) {
        db.collection('users').findOne({ username: username }, function (err, user) {
          console.log('User '+ username +' attempted to log in.');
          if (err) { return done(err); }
          if (!user) { return done(null, false); }
          if (!bcrypt.compareSync(password, user.password)) { return done(null, false); }
          return done(null, user);
        });
      }
    ));
  
    passport.serializeUser((user, done) => {
      done(null, user._id);
    });
    
    passport.deserializeUser((id, done) => {
      db.collection('users').findOne(
        {_id: new ObjectID(id)},
        (err, doc) => {
          done(null, doc);
        }
      );
    });

}