fix/login+signup+logout session bugs

This commit is contained in:
SowinskiBraeden committed 2025-05-14 09:34:32 -07:00
1 parent ccae6a51ff
commit 3771288123
5 files changed
+94 -42

No files matched your search

+35 -7
View File
@@ -1,5 +1,6 @@
const status = require("../util/statuses");
const session = require("express-session");
const ObjectId = require("mongodb").ObjectId;
// Get all names of user routes
let userRouter = require("../router/user")((req, res, next) => next(), null, null, null);
@@ -18,26 +19,53 @@ const createMiddleware = (users) => {
return res.status(status.NotFound).redirect("/notFound");
}
if (!req.session.authenticated || !req.session.email) {
if (!req.session.authenticated || !req.session.userId) {
req.session.errMessage = "Please login to view that resource";
res.redirect("/login");
return res.status(status.Unauthorized);
}
if (!req.session.user) {
let user = await users.findOne({ "email": req.session.email }).then((user) => user);
let user = await users.findOne({ _id: new ObjectId(req.session.userId) }).then((user) => user);
if (!user) {
req.session.errMessage = "User not found";
res.redirect("/login");
return res.status(status.Unauthorized);
return req.session.destroy((err) => {
if (err) {
console.error("Failed to destroy session: ", err);
req.session.errMessage = "Failed to logout. Please try again";
res.status(status.InternalServerError);
return res.redirect("/home");
}
req.session.errMessage = "User not found";
res.status(status.NotFound);
res.redirect("/login");
});
}
req.session.user = user;
return req.session.save((err) => {
if (err) {
console.error("Failed to save session: ", err);
return req.session.destroy((err) => {
req.session.errMessage = "An error occured, please login again.";
if (err) {
console.error("Failed to destroy session: ", err);
}
res.status(status.InternalServerError);
res.redirect("/login");
});
}
next();
});
}
next();
};
}
};
module.exports = createMiddleware;