I wanted to make a login system with Passport. When I log with bad information, it warns me but when I do it with good credentials, the favicon just spins there
Here's the code
const express = require("express");
const router = express.Router();
const User = require("../models/user");
const catchAsync = require("../utils/catchAsync");
const passport = require("passport");
router.get("/register", (req, res) => {
res.render("users/register");
});
router.post("/register", catchAsync(async (req, res) => {
try {
const {email, username, password} = req.body;
const user = new User({email, username});
await User.register(user, password);
req.flash("success", "Welcome to Yelp Camp!");
res.redirect("/campgrounds");
} catch (e) {
req.flash("error", e.message);
res.redirect("/register");
}
}));
router.get("/login", (req, res) => {
res.render("users/login");
});
router.post("/login", passport.authenticate("local", {failureFlash: true, failureRedirect: "/login"}), (req, res) => {
req.flash("success", "WELCOME BACK!");
res.redirect("/campgrounds");
})
module.exports = router;
UPDATE: Campgrounds code:
const express = require("express");
const router = express.Router();
const catchAsync = require("../utils/catchAsync");
const ExpressError = require("../utils/ExpressError");
const Campground = require("../models/campground");
const {campgroundSchema} = require("../schemas.js");
const validateCampground = (req, res, next) => {
const {error} = campgroundSchema.validate(req.body);
if(error) {
const msg = error.details.map(el => el.message).join(", ");
throw new ExpressError(msg, 400);
} else {
next();
}
}
// The main page
router.get("/", catchAsync(async(req, res) => {
const campground = await Campground.find({});
res.render("campgrounds/index", {campground});
}));
// The form page
router.get("/new", (req, res) => {
res.render("campgrounds/new");
});
// Sending the form
router.post("/", validateCampground, catchAsync(async (req, res, next) => {
req.flash("success", "Successfully made a new campground!");
const campground = new Campground(req.body.campground);
await campground.save();
res.redirect(`/campgrounds/${campground._id}`);
}));
// The show page
router.get("/:id", catchAsync(async(req, res) => {
const {id} = req.params;
const campground = await Campground.findById(id).populate('reviews');
if(!campground) {
req.flash("error", "Cannot find that campground!")
res.redirect("/campgrounds");
}
res.render("campgrounds/show", {campground});
}));
// Get the edit page
router.get("/:id/edit", catchAsync(async(req, res) => {
const {id} = req.params;
const campground = await Campground.findById(id);
res.render("campgrounds/edit", {campground});
}));
// Update
router.put("/:id", validateCampground, catchAsync(async(req, res, next) =>{
const {id} = req.params;
const campground = await Campground.findByIdAndUpdate(id, {...req.body.campground}, {new: true});
req.flash("success", "Successfully edited campground!");
res.redirect(`/campgrounds/${campground._id}`);
}));
// Delete
router.delete("/:id", catchAsync(async(req, res) => {
const {id} = req.params;
const campground = await Campground.findByIdAndDelete(id);
req.flash("success", "Successfully deleted campground!");
res.redirect("/campgrounds");
}));
module.exports = router;
Even tried with successRedirect from the docs but the results it's still the same. Thanks in advance!
question from:
https://stackoverflow.com/questions/65916383/passport-authenticatelocal-doesnt-redirect-me-somewhere