middleware.js 1.9 KB

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