cors.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. 'use strict';
  2. require('../models/db');
  3. const config = require('config');
  4. const url = require('url');
  5. function respond(origin, req, res, next) {
  6. res.header('Access-Control-Allow-Origin', origin);
  7. res.header('Access-Control-Allow-Credentials', true);
  8. res.header('Access-Control-Max-Age', 60 * 60 * 24);
  9. res.header('Access-Control-Expose-Headers', 'Accepts, Content-Type, X-Spacedeck-Space-Role, X-Spacedeck-Channel, X-Spacedeck-Spacepassword, X-Spacedeck-Auth, X-Spacedeck-Space-Auth');
  10. res.header('Access-Control-Allow-Headers', 'Accepts, Accept-Language, Accept-Encoding, Accept-Language, Content-Type, X-Spacedeck-Space-Auth, X-Spacedeck-Space-Role, X-Spacedeck-Channel, X-Spacedeck-Spacepassword, X-Spacedeck-Auth');
  11. res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
  12. if (req.method == 'OPTIONS') {
  13. res.sendStatus(204);
  14. } else {
  15. next();
  16. }
  17. }
  18. module.exports = (req, res, next) => {
  19. const origin = req.headers.origin;
  20. if (origin) {
  21. const parsedUrl = url.parse(origin, true, true);
  22. // FIXME
  23. if (parsedUrl.hostname == "cdn.spacedeck.com") {
  24. res.header('Cache-Control', "max-age");
  25. res.header('Expires', "30d");
  26. res.removeHeader("Pragma");
  27. respond(origin, req, res, next);
  28. } else {
  29. //Team.getTeamForHost(parsedUrl.hostname, (err, team, subdomain) => {
  30. //if (team) {
  31. respond(origin, req, res, next);
  32. //} else {
  33. next();
  34. //}
  35. //});
  36. }
  37. } else {
  38. next();
  39. }
  40. }