middleware.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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.user = undefined;
  28. req.session.error = "PLEASE LOG IN";
  29. return res.redirect("/login");
  30. }
  31. return res.json("ERROR: UNABLE TO RETRIEVE DATA");
  32. });
  33. },
  34. formatBanner: function(req, res, next){
  35. if(req.session.error !== undefined){
  36. res.locals.banner = {
  37. type: "error",
  38. message: req.session.error,
  39. color: "red"
  40. };
  41. req.session.error = undefined;
  42. }else if(req.session.success !== undefined){
  43. res.locals.banner = {
  44. type: "notification",
  45. message: req.session.success,
  46. color: "green"
  47. };
  48. req.session.success = undefined;
  49. }
  50. return next();
  51. }
  52. }