middleware.js 2.3 KB

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