middleware.js 2.0 KB

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