Basically I want to redirect user to their pages.
If it's a user, it should redirect to user's menu on the other hand, if it's an employee, it should redirect to employee's menu.
When I try to login, it shows logged in is true
but, it is still on login page and throws error as shown below -
Customer and employee undefined Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
Login.js
router.post("/login", function (req, res, next) {
passport.authenticate("local", function (err, user, info) {
if (err) {
return next(err);
}
if (!user) {
console.log("email password");
return res.redirect("/login");
}
req.logIn(user, function (err) {
if (err) {
return next(err);
}
req.session.isLoggedIn = true;
req.session.user = user;
req.session.save((err) => {
console.log(err);
if (req.isAuthenticated()) {
if (req.session.isLoggedIn === true) {
let customer = User.find(user.email);
let employee = Employee.find(user.email);
if (employee) {
res.render("employeeMenu");
}
if (customer) {
res.render("clientMenu");
}
}
return res.render("index");
}
console.log("user not exist");
return res.redirect("/login");
});
});
})(req, res, next);
});
function isLoggedIn(req, res, next) {
if (req.isAuthenticated()) {
req.isLogged = true;
return next();
} else {
req.isLogged = false;
return next();
}
}
User Model
const mongoose = require('mongoose')
const Schema = mongoose.Schema
const userSchema = new Schema({
firstName:{
type:String,
required:true
},
lastName:{
type:String,
required:true
},
email:{
type:String,
required:true,
unique:true
},
password:{
type:String,
required:true,
}
})
Users = mongoose.model('User', userSchema)
module.exports = Users
Employee Model
const mongoose = require('mongoose')
const Schema = mongoose.Schema
const employeeSchema = new Schema({
First_name:{
type: String,
required:true
},
Last_name:{
type:String,
required:true
},
email:{
type:String,
required:true,
unique:true,
},
contactNo:{
type:Number,
required:true,
unique:true
},
password:{
type:String,
required:true,
},
joined:{
type:Date,
default:Date.now
}
})
Employee = mongoose.model('Employee', employeeSchema)
module.exports = Employee
You want to write middleware, not a route handler. So,
app.use(function(req, res, next) { if (req.session.user == null){ // if user is not logged-in redirect back to login page // res.redirect('/'); } else{ next(); } });
And also as the error suggest, you haven't created the customer and employee
fields or columns in your database schema. Hence, create it.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.