Lists list and CUD
Custom forms list Updated DB schema (not yet implemented in the server, which means that most of the server is not broken). - custom forms are independent of a list - order and visibility of fields is now in custom_fields - first_name and last_name has been turned to a regular custom field
This commit is contained in:
parent
216fe40b53
commit
f6e1938ff9
47 changed files with 1245 additions and 122 deletions
|
@ -10,12 +10,13 @@ function getRequestContext(req) {
|
|||
return context;
|
||||
}
|
||||
|
||||
function getServiceContext() {
|
||||
function getAdminContext() {
|
||||
const context = {
|
||||
user: {
|
||||
id: 1,
|
||||
username: 'admin',
|
||||
name: 'Service worker',
|
||||
admin: true,
|
||||
id: 0,
|
||||
username: '',
|
||||
name: '',
|
||||
email: ''
|
||||
}
|
||||
};
|
||||
|
@ -25,5 +26,5 @@ function getServiceContext() {
|
|||
|
||||
module.exports = {
|
||||
getRequestContext,
|
||||
getServiceContext
|
||||
getAdminContext
|
||||
};
|
|
@ -1,7 +1,7 @@
|
|||
'use strict';
|
||||
|
||||
let config = require('config');
|
||||
let mysql = require('mysql');
|
||||
let mysql = require('mysql2');
|
||||
let redis = require('redis');
|
||||
let Lock = require('redfour');
|
||||
let stringifyDate = require('json-stringify-date');
|
||||
|
|
|
@ -5,7 +5,7 @@ This module handles Mailtrain database initialization and upgrades
|
|||
*/
|
||||
|
||||
let config = require('config');
|
||||
let mysql = require('mysql');
|
||||
let mysql = require('mysql2');
|
||||
let log = require('npmlog');
|
||||
let fs = require('fs');
|
||||
let pathlib = require('path');
|
||||
|
|
|
@ -6,15 +6,7 @@ let shortid = require('shortid');
|
|||
let segments = require('./segments');
|
||||
let _ = require('../translate')._;
|
||||
let tableHelpers = require('../table-helpers');
|
||||
|
||||
const UnsubscriptionMode = {
|
||||
ONE_STEP: 0,
|
||||
ONE_STEP_WITH_FORM: 1,
|
||||
TWO_STEP: 2,
|
||||
TWO_STEP_WITH_FORM: 3,
|
||||
MANUAL: 4,
|
||||
MAX: 5
|
||||
};
|
||||
const UnsubscriptionMode = require('../../shared/lists').UnsubscriptionMode;
|
||||
|
||||
module.exports.UnsubscriptionMode = UnsubscriptionMode;
|
||||
|
||||
|
|
|
@ -11,6 +11,14 @@ async function validateEntity(tx, entity) {
|
|||
}
|
||||
}
|
||||
|
||||
async function validateMove(context, entity, existing, entityTypeId, createOperation, deleteOperation) {
|
||||
if (existing.namespace !== entity.namespace) {
|
||||
await shares.enforceEntityPermission(context, 'namespace', entity.namespace, createOperation);
|
||||
await shares.enforceEntityPermission(context, entityTypeId, entity.id, deleteOperation);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
validateEntity
|
||||
validateEntity,
|
||||
validateMove
|
||||
};
|
|
@ -14,6 +14,7 @@ const bodyParser = require('body-parser');
|
|||
const users = require('../models/users');
|
||||
const { nodeifyFunction, nodeifyPromise } = require('./nodeify');
|
||||
const interoperableErrors = require('../shared/interoperable-errors');
|
||||
const contextHelpers = require('./context-helpers');
|
||||
|
||||
let LdapStrategy;
|
||||
try {
|
||||
|
@ -143,6 +144,6 @@ if (config.ldap.enabled && LdapStrategy) {
|
|||
})));
|
||||
|
||||
passport.serializeUser((user, done) => done(null, user.id));
|
||||
passport.deserializeUser((id, done) => nodeifyPromise(users.getById(null, id), done));
|
||||
passport.deserializeUser((id, done) => nodeifyPromise(users.getById(contextHelpers.getAdminContext(), id), done));
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,16 @@ const entityTypes = {
|
|||
sharesTable: 'shares_namespace',
|
||||
permissionsTable: 'permissions_namespace'
|
||||
},
|
||||
list: {
|
||||
entitiesTable: 'lists',
|
||||
sharesTable: 'shares_list',
|
||||
permissionsTable: 'permissions_list'
|
||||
},
|
||||
customForm: {
|
||||
entitiesTable: 'custom_forms',
|
||||
sharesTable: 'shares_custom_form',
|
||||
permissionsTable: 'permissions_custom_form'
|
||||
},
|
||||
report: {
|
||||
entitiesTable: 'reports',
|
||||
sharesTable: 'shares_report',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue