mailtrain/lib/client-helpers.js

60 lines
1.6 KiB
JavaScript
Raw Normal View History

'use strict';
const passport = require('./passport');
const config = require('config');
2017-07-24 04:03:32 +00:00
const permissions = require('./permissions');
2017-07-24 04:03:32 +00:00
function getAnonymousConfig(context) {
return {
authMethod: passport.authMethod,
isAuthMethodLocal: passport.isAuthMethodLocal,
externalPasswordResetLink: config.ldap.passwordresetlink,
language: config.language || 'en',
2017-07-24 04:03:32 +00:00
isAuthenticated: !!context.user
}
}
function getAuthenticatedConfig(context) {
const roles = {};
for (const entityTypeId in config.roles) {
const rolesPerEntityType = {};
for (const roleId in config.roles[entityTypeId]) {
const roleSpec = config.roles[entityTypeId][roleId];
rolesPerEntityType[roleId] = {
name: roleSpec.name,
description: roleSpec.description
}
}
roles[entityTypeId] = rolesPerEntityType;
}
return {
userId: context.user.id,
roles
}
}
function registerRootRoute(router, entryPoint, title) {
router.get('/*', passport.csrfProtection, (req, res) => {
2017-07-24 04:03:32 +00:00
const mailtrainConfig = getAnonymousConfig(req.context);
if (req.user) {
Object.assign(mailtrainConfig, getAuthenticatedConfig(req.context));
}
res.render('react-root', {
title,
reactEntryPoint: entryPoint,
reactCsrfToken: req.csrfToken(),
2017-07-24 04:03:32 +00:00
mailtrainConfig: JSON.stringify(mailtrainConfig)
});
});
}
module.exports = {
2017-07-24 04:03:32 +00:00
registerRootRoute,
getAuthenticatedConfig
};