session.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. 'use strict';
  2. const db = require('../models/db');
  3. var config = require('config');
  4. module.exports = (req, res, next) => {
  5. const token = req.cookies["sdsession"];
  6. if (token && token != "null" && token != null) {
  7. db.Session.findOne({where: {token: token}})
  8. .then(session => {
  9. if (!session) {
  10. // session not found
  11. next();
  12. }
  13. else db.User.findOne({where: {_id: session.user_id}})
  14. .then(user => {
  15. if (!user) {
  16. var domain = (process.env.NODE_ENV == "production") ? new URL(config.get('endpoint')).hostname : req.headers.hostname;
  17. res.clearCookie('sdsession', { domain: domain });
  18. if (req.accepts("text/html")) {
  19. res.send("Please clear your cookies and try again.");
  20. } else if (req.accepts('application/json')) {
  21. res.status(403).json({
  22. "error": "token_not_found"
  23. });
  24. } else {
  25. res.send("Please clear your cookies and try again.");
  26. }
  27. } else {
  28. req["token"] = token;
  29. req["user"] = user;
  30. next();
  31. }
  32. });
  33. })
  34. .error(err => {
  35. console.error("Session resolve error",err);
  36. next();
  37. });
  38. } else {
  39. next();
  40. }
  41. }