Share report template functionality

This commit is contained in:
Tomas Bures 2017-07-24 07:03:32 +03:00
parent e6ad0e239e
commit 4822a50d0b
35 changed files with 614 additions and 128 deletions

View file

@ -2,29 +2,58 @@
const passport = require('./passport');
const config = require('config');
const permissions = require('./permissions');
function _getConfig(context) {
function getAnonymousConfig(context) {
return {
authMethod: passport.authMethod,
isAuthMethodLocal: passport.isAuthMethodLocal,
externalPasswordResetLink: config.ldap.passwordresetlink,
language: config.language || 'en',
userId: context.user ? context.user.id : undefined
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) => {
const mailtrainConfig = getAnonymousConfig(req.context);
if (req.user) {
Object.assign(mailtrainConfig, getAuthenticatedConfig(req.context));
}
res.render('react-root', {
title,
reactEntryPoint: entryPoint,
reactCsrfToken: req.csrfToken(),
mailtrainConfig: JSON.stringify(_getConfig(req.context))
mailtrainConfig: JSON.stringify(mailtrainConfig)
});
});
}
module.exports = {
registerRootRoute
registerRootRoute,
getAuthenticatedConfig
};

View file

@ -8,6 +8,7 @@ const knex = require('knex')({
migrations: {
directory: __dirname + '/../setup/knex/migrations'
}
// , debug: true
});
knex.migrate.latest();

View file

@ -2,13 +2,35 @@
const config = require('config');
class ListPermission {
// FIXME - redo or delete
/*
class ReportTemplatePermission {
constructor(name) {
this.name = name;
this.entityType = 'report-template';
}
}
const ReportTemplatePermissions = {
View: new ReportTemplatePermission('view'),
Edit: new ReportTemplatePermission('edit'),
Delete: new ReportTemplatePermission('delete')
};
class ListPermission {
constructor(name) {
this.name = name;
this.entityType = 'list';
}
}
const ListPermissions = {
View: new ListPermissions('view')
};
class NamespacePermission {
constructor(name) {
this.name = name;
@ -16,10 +38,6 @@ class NamespacePermission {
}
}
const ListPermissions = {
View: new ListPermissions('view')
};
const NamespacePermissions = {
View: new NamespacePermission('view'),
Edit: new NamespacePermission('edit'),
@ -27,7 +45,9 @@ const NamespacePermissions = {
Delete: new NamespacePermission('delete'),
CreateList: new NamespacePermission('create list')
};
*/
/*
async function can(context, operation, entityId) {
if (!context.user) {
return false;
@ -48,3 +68,8 @@ async function buildPermissions() {
can(ctx, ListPermissions.View, 3)
can(ctx, NamespacePermissions.CreateList, 2)
can(ctx, ReportTemplatePermissions.ViewReport, 5)
*/
module.exports = {
}

View file

@ -2,7 +2,7 @@
const _ = require('./translate')._;
const util = require('util');
const isemail = require('isemail')
const isemail = require('isemail');
module.exports = {
validateEmail