I have added authentication to my website and it shows a message as shown in the picture when I login or signup. And also I have an option called "Add Comment", which opens only if the user is logged in or else it redirects to the login page. But here when I login and click on the "Add Comment" button it still redirects to the login pageant it doesn't show me the Add Comment page.
Authentication routes:
app.get("/register", function(req, res){
res.render("register");
})
app.post("/register", function(req, res){
User.register(new User({username: req.body.username}), req.body.password, function(err, user){
if(err){
console.log(err);
return res.render("register");
}
else{
passport.authenticate("local")(req, res, function(){
res.redirect("/campgrounds");
})
}
})
})
app.get("/login", function(req, res){
res.render("login");
})
app.post("/login", passport.authenticate("local", {
successRedirect: "/campgrounds",
failureRedirect: "/login"
}), function(req, res){
})
app.get("/logout", function(req, res){
req.logout();
res.redirect("/")
})
function isLoggedIn(req, res, next){
if(req.isAuthenticated()){
return next();
}
res.redirect("/login");
}
Comment Route:
app.get("/campgrounds/:id/comments/new", isLoggedIn, function(req, res){
Campground.findById(req.params.id, function(err, campground){
if(err){
console.log(err);
}
else{
res.render("comments/new", {campground: campground});
}
})
})
app.post("/campgrounds/:id/comments", isLoggedIn, function(req, res){
Campground.findById(req.params.id, function(err, campground){
if(err){
console.log(err);
res.redirect("/campgrounds");
}
else{
Comment.create(req.body.comment, function(err, comment){
if(err){
console.log(err);
}
else{
campground.comments.push(comment);
campground.save();
res.redirect("/campgrounds/" + campground._id);
}
})
}
})
})
Top comments (0)