middleware.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. const Owner = require("./models/owner.js");
  2. const helper = require("./controllers/helper.js");
  3. module.exports = {
  4. verifySession: function(req, res, next){
  5. if(req.session.owner === undefined) {
  6. req.session.error = "PLEASE LOG IN";
  7. return res.redirect("/login");
  8. }
  9. Owner.findOne({"session.sessionId": req.session.owner})
  10. .then((owner)=>{
  11. if(owner === null) throw "login";
  12. //Check if session is out of date
  13. if(owner.session.expiration < new Date()){
  14. let newExpiration = new Date();
  15. newExpiration.setDate(newExpiration.getDate() + 90);
  16. owner.session.sessionId = helper.generateId(25);
  17. owner.session.expiration = newExpiration;
  18. owner.save();
  19. throw "login";
  20. }
  21. res.locals.owner = owner;
  22. return next();
  23. })
  24. .catch((err)=>{
  25. if(err === "login"){
  26. req.session.owner = undefined;
  27. req.session.error = "PLEASE LOG IN";
  28. return res.redirect("/login");
  29. }
  30. return res.json("ERROR: UNABLE TO RETRIEVE DATA");
  31. });
  32. },
  33. formatBanner: function(req, res, next){
  34. if(req.session.error !== undefined){
  35. res.locals.banner = {
  36. type: "error",
  37. message: req.session.error,
  38. color: "red"
  39. };
  40. req.session.error = undefined;
  41. }else if(req.session.success !== undefined){
  42. res.locals.banner = {
  43. type: "notification",
  44. message: req.session.success,
  45. color: "green"
  46. };
  47. req.session.success = undefined;
  48. }
  49. return next();
  50. }
  51. }