What’s happening:
I got an error message in the console saying,
ReferenceError: passpost is not defined
at /home/runner/boilerplate-advancednode/server.js:45:5
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async main (/home/runner/boilerplate-advancednode/connection.js:14:9)
My code so far
"use strict";
require("dotenv").config();
const express = require("express");
const myDB = require("./connection");
const fccTesting = require("./freeCodeCamp/fcctesting.js");
const session = require("express-session");
const passport = require("passport");
const ObjectID = require("mongodb").ObjectID;
const LocalStrategy = require("passport-local");
const bodyParser = require("body-parser");
const app = express();
app.set("view engine", "pug");
fccTesting(app); //For FCC testing purposes
app.use("/public", express.static(`${process.cwd()}/public`));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(session({
secret: process.env.SESSION_SECRET,
resave: true,
saveUninitialized: true,
cookie: { secure: false }
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(bodyParser.urlencoded({ extended: true }));
myDB(async client => {
const myDataBase = await client.db("database").collection("users");
app.route("/").get((req, res) => {
res.render("pug", {
title: "Connected to Database",
message: "Please login",
showLogin: true
});
});
app.route("/login").post(
passpost.authenticate("local",
{ failureRedirect: "/" }),
(req, res) => {
if (req.user && req.body) {
console.log(req.body);
}
}
);
passport.serializeUser((user, done) => {
done(null, user._id);
});
passport.deserializeUser((id, done) => {
myDataBase.findOne({ _id: new ObjectID(id) }, (err, doc) => {
done(null, doc);
});
});
passport.use(new LocalStrategy(
(username, password, done) => {
myDataBase.findOne({ username: username }, (err, user) => {
console.log(`User ${username} has attempted to log in`);
if (err) {
return done(err);
}
if (!user) {
return done(null, false);
}
if (password !== user.password) {
return done(null, false);
}
return done(null, user);
});
}
));
const ensureAuthenticated = (req, res, next) => {
if (req.isAuthenticated()) {
return next();
}
res.redirect("/");
};
app.route("/profile").get(ensureAuthenticated, (req, res) => {
res.render(`${process.cwd()}/views/pug/profile`);
});
}).catch(e => {
app.route("/").get((req, res) => {
res.render("pug", {
title: e,
message: "Unable to login"
});
});
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Listening on port ${PORT}`);
});
What did I do wrong? Someone please help. Thanks.
My browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.56
.
Challenge: Create New Middleware
Link to the challenge: