middleware.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. let owner = Owner.findOne({"session.sessionId": req.session.owner});
  10. let merchant = Merchant.findOne({_id: req.session.merchant});
  11. Promise.all([owner, merchant])
  12. .then((response)=>{
  13. if(response[0] === null || response[1] === null) throw "login";
  14. if(response[0]._id !== response[1].owner) throw "login";
  15. //Check if session is out of date
  16. if(response[0].session.expiration < new Date()){
  17. let newExpiration = new Date();
  18. newExpiration.setDate(newExpiration.getDate() + 90);
  19. response[0].session.sessionId = helper.generateId(25);
  20. response[0].session.expiration = newExpiration;
  21. response[0].save();
  22. throw "login";
  23. }
  24. res.locals.owner = response[0];
  25. res.locals.merchant = response[1];
  26. return next();
  27. })
  28. .catch((err)=>{
  29. if(err === "login"){
  30. req.session.owner = undefined;
  31. req.session.error = "PLEASE LOG IN";
  32. return res.redirect("/login");
  33. }
  34. return res.json("ERROR: UNABLE TO RETRIEVE DATA");
  35. });
  36. },
  37. formatBanner: function(req, res, next){
  38. if(req.session.error !== undefined){
  39. res.locals.banner = {
  40. type: "error",
  41. message: req.session.error,
  42. color: "red"
  43. };
  44. req.session.error = undefined;
  45. }else if(req.session.success !== undefined){
  46. res.locals.banner = {
  47. type: "notification",
  48. message: req.session.success,
  49. color: "green"
  50. };
  51. req.session.success = undefined;
  52. }
  53. return next();
  54. }
  55. }