state.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. const config = require('./config');
  2. const layout = require('./layout');
  3. const assets = require('../common/assets');
  4. const getTranslator = require('./locale');
  5. const { getFxaConfig } = require('./fxa');
  6. module.exports = async function(req) {
  7. const locale = req.language || 'en-US';
  8. let authConfig = null;
  9. let robots = 'none';
  10. if (req.route && req.route.path === '/') {
  11. robots = 'all';
  12. }
  13. if (config.fxa_client_id) {
  14. try {
  15. authConfig = await getFxaConfig();
  16. authConfig.client_id = config.fxa_client_id;
  17. authConfig.fxa_required = config.fxa_required;
  18. } catch (e) {
  19. if (config.auth_required) {
  20. throw new Error('fxa_required is set but no config was found');
  21. }
  22. // continue without accounts
  23. }
  24. }
  25. const prefs = {};
  26. if (config.survey_url) {
  27. prefs.surveyUrl = config.survey_url;
  28. }
  29. return {
  30. archive: {
  31. numFiles: 0
  32. },
  33. locale,
  34. capabilities: { account: false },
  35. translate: getTranslator(locale),
  36. title: 'Firefox Send',
  37. description:
  38. 'Encrypt and send files with a link that automatically expires to ensure your important documents don’t stay online forever.',
  39. baseUrl: config.base_url,
  40. ui: {},
  41. storage: {
  42. files: []
  43. },
  44. fileInfo: {},
  45. cspNonce: req.cspNonce,
  46. user: { avatar: assets.get('user.svg'), loggedIn: false },
  47. robots,
  48. authConfig,
  49. prefs,
  50. layout
  51. };
  52. };