Share report template functionality
This commit is contained in:
parent
e6ad0e239e
commit
4822a50d0b
35 changed files with 614 additions and 128 deletions
|
@ -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
|
||||
};
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ const knex = require('knex')({
|
|||
migrations: {
|
||||
directory: __dirname + '/../setup/knex/migrations'
|
||||
}
|
||||
// , debug: true
|
||||
});
|
||||
|
||||
knex.migrate.latest();
|
||||
|
|
|
@ -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 = {
|
||||
}
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
const _ = require('./translate')._;
|
||||
const util = require('util');
|
||||
const isemail = require('isemail')
|
||||
const isemail = require('isemail');
|
||||
|
||||
module.exports = {
|
||||
validateEmail
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue