middleware.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. const Merchant = require("./models/merchant.js")
  2. module.exports = {
  3. verifySession: function(req, res, next){
  4. if(req.session.user === undefined) {
  5. req.session.error = "PLEASE LOG IN";
  6. return res.redirect("/login");
  7. }
  8. Merchant.findOne({"session.sessionId": req.session.user})
  9. .then((merchant)=>{
  10. if(merchant === null){
  11. throw "no merchant";
  12. }
  13. if(merchant.session.date < new Date()){
  14. let newExpiration = new Date();
  15. newExpiration.setDate(newExpiration.getDate() + 90);
  16. merchant.session.sessionId = helper.generateId(25);
  17. merchant.session.date = newExpiration;
  18. merchant.save();
  19. req.session.error = "PLEASE LOG IN";
  20. return res.redirect("/login");
  21. }
  22. res.locals.merchant = merchant;
  23. return next();
  24. })
  25. .catch((err)=>{
  26. if(err === "no merchant"){
  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. }