mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 15:17:25 +01:00
71 lines
2.7 KiB
JavaScript
71 lines
2.7 KiB
JavaScript
var nconf = require('nconf');
|
|
var _ = require('lodash');
|
|
var utils = require('../libs/api-v2/utils');
|
|
var shared = require('../../../common');
|
|
var i18n = require('../libs/api-v2/i18n');
|
|
var buildManifest = require('../libs/api-v2/buildManifest');
|
|
var shared = require('../../../common');
|
|
var forceRefresh = require('./forceRefresh');
|
|
var tavernQuest = require('../models/group').tavernQuest;
|
|
var mods = require('../models/user').mods;
|
|
|
|
// To avoid stringifying more data then we need,
|
|
// items from `env` used on the client will have to be specified in this array
|
|
var clientVars = ['language', 'isStaticPage', 'avalaibleLanguages', 'translations',
|
|
'FACEBOOK_KEY', 'NODE_ENV', 'BASE_URL', 'GA_ID',
|
|
'AMAZON_PAYMENTS', 'STRIPE_PUB_KEY', 'AMPLITUDE_KEY',
|
|
'worldDmg', 'mods', 'IS_MOBILE'];
|
|
|
|
var env = {
|
|
getManifestFiles: buildManifest.getManifestFiles,
|
|
getBuildUrl: buildManifest.getBuildUrl,
|
|
_: _,
|
|
clientVars: clientVars,
|
|
mods: mods,
|
|
Content: shared.content,
|
|
siteVersion: forceRefresh.siteVersion,
|
|
avalaibleLanguages: i18n.avalaibleLanguages,
|
|
AMAZON_PAYMENTS: {
|
|
SELLER_ID: nconf.get('AMAZON_PAYMENTS:SELLER_ID'),
|
|
CLIENT_ID: nconf.get('AMAZON_PAYMENTS:CLIENT_ID')
|
|
}
|
|
};
|
|
|
|
'NODE_ENV BASE_URL GA_ID STRIPE_PUB_KEY FACEBOOK_KEY AMPLITUDE_KEY'.split(' ').forEach(function(key){
|
|
env[key] = nconf.get(key);
|
|
});
|
|
|
|
module.exports = function(req, res, next) {
|
|
var language = _.find(i18n.avalaibleLanguages, {code: req.language});
|
|
var isStaticPage = req.url.split('/')[1] === 'static'; // If url contains '/static/'
|
|
|
|
// Load moment.js language file only when not on static pages
|
|
language.momentLang = ((!isStaticPage && i18n.momentLangs[language.code]) || undefined);
|
|
|
|
res.locals.habitrpg = _.assign(env, {
|
|
IS_MOBILE: /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(req.header('User-Agent')),
|
|
language: language,
|
|
isStaticPage: isStaticPage,
|
|
translations: i18n.translations[language.code],
|
|
t: function(){ // stringName and vars are the allowed parameters
|
|
var args = Array.prototype.slice.call(arguments, 0);
|
|
args.push(language.code);
|
|
return shared.i18n.t.apply(null, args);
|
|
},
|
|
// Defined here and not outside of the middleware because tavernQuest might be an
|
|
// empty object until the query to fetch it finishes
|
|
worldDmg: (tavernQuest && tavernQuest.extra && tavernQuest.extra.worldDmg) || {},
|
|
});
|
|
|
|
// Put query-string party (& guild but use partyInvite for backward compatibility)
|
|
// invitations into session to be handled later
|
|
// TODO once we have proper logging in place, log errors here
|
|
if(req.query.partyInvite){
|
|
try{
|
|
req.session.partyInvite = JSON.parse(utils.decrypt(req.query.partyInvite));
|
|
} catch(e){}
|
|
}
|
|
|
|
next();
|
|
};
|