v1.16.0
This commit is contained in:
parent
3fcd389db8
commit
896fc01015
14 changed files with 95 additions and 29 deletions
|
@ -5,8 +5,9 @@ let tools = require('../tools');
|
|||
let slugify = require('slugify');
|
||||
let lists = require('./lists');
|
||||
let shortid = require('shortid');
|
||||
let Handlebars = require('handlebars');
|
||||
|
||||
let allowedKeys = ['name', 'key', 'default_value', 'group', 'visible'];
|
||||
let allowedKeys = ['name', 'key', 'default_value', 'group', 'group_template', 'visible'];
|
||||
let allowedTypes;
|
||||
|
||||
module.exports.grouped = ['radio', 'checkbox', 'dropdown'];
|
||||
|
@ -104,7 +105,9 @@ module.exports.get = (id, callback) => {
|
|||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
return callback(null, rows && rows[0] && tools.convertKeys(rows[0]) || false);
|
||||
let field = rows && rows[0] && tools.convertKeys(rows[0]) || false;
|
||||
field.isGroup = module.exports.grouped.includes(field.type);
|
||||
return callback(null, field);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
@ -126,7 +129,10 @@ module.exports.create = (listId, field, callback) => {
|
|||
field.group = null;
|
||||
}
|
||||
|
||||
addCustomField(listId, field.name, field.defaultValue, field.type, field.group, field.visible, callback);
|
||||
field.defaultValue = (field.defaultValue || '').toString().trim() || null;
|
||||
field.groupTemplate = (field.groupTemplate || '').toString().trim() || null;
|
||||
|
||||
addCustomField(listId, field.name, field.defaultValue, field.type, field.group, field.groupTemplate, field.visible, callback);
|
||||
};
|
||||
|
||||
module.exports.update = (id, updates, callback) => {
|
||||
|
@ -147,6 +153,9 @@ module.exports.update = (id, updates, callback) => {
|
|||
updates.key = slugify(updates.key, '_').toUpperCase();
|
||||
}
|
||||
|
||||
updates.defaultValue = (updates.defaultValue || '').toString().trim() || null;
|
||||
updates.groupTemplate = (updates.groupTemplate || '').toString().trim() || null;
|
||||
|
||||
updates.visible = updates.visible ? 1 : 0;
|
||||
|
||||
let name = (updates.name || '').toString().trim();
|
||||
|
@ -264,7 +273,7 @@ module.exports.delete = (fieldId, callback) => {
|
|||
});
|
||||
};
|
||||
|
||||
function addCustomField(listId, name, defaultValue, type, group, visible, callback) {
|
||||
function addCustomField(listId, name, defaultValue, type, group, groupTemplate, visible, callback) {
|
||||
type = (type || '').toString().trim().toLowerCase();
|
||||
group = Number(group) || null;
|
||||
listId = Number(listId) || 0;
|
||||
|
@ -301,8 +310,8 @@ function addCustomField(listId, name, defaultValue, type, group, visible, callba
|
|||
column = ('custom_' + slugify(name, '_') + '_' + shortid.generate()).toLowerCase().replace(/[^a-z0-9\_]/g, '');
|
||||
}
|
||||
|
||||
let query = 'INSERT INTO custom_fields (`list`, `name`, `key`,`default_value`, `type`, `group`, `column`, `visible`) VALUES(?,?,?,?,?,?,?,?)';
|
||||
connection.query(query, [listId, name, key, defaultValue, type, group, column, visible ? 1 : 0], (err, result) => {
|
||||
let query = 'INSERT INTO custom_fields (`list`, `name`, `key`,`default_value`, `type`, `group`, `group_template`, `column`, `visible`) VALUES(?,?,?,?,?,?,?,?,?)';
|
||||
connection.query(query, [listId, name, key, defaultValue, type, group, groupTemplate, column, visible ? 1 : 0], (err, result) => {
|
||||
|
||||
if (err) {
|
||||
connection.release();
|
||||
|
@ -397,7 +406,7 @@ module.exports.getRow = (fieldList, values, useDate, showAll, onlyExisting) => {
|
|||
value: Number(valueList[field.column]) || 0,
|
||||
visible: !!field.visible,
|
||||
mergeTag: field.key,
|
||||
mergeValue: Number(valueList[field.column]) || field.defaultValue || 0,
|
||||
mergeValue: Number(valueList[field.column]) || Number(field.defaultValue) || 0,
|
||||
['type' + (field.type || '').toString().trim().replace(/(?:^|\-)([a-z])/g, (m, c) => c.toUpperCase())]: true
|
||||
};
|
||||
row.push(item);
|
||||
|
@ -415,6 +424,7 @@ module.exports.getRow = (fieldList, values, useDate, showAll, onlyExisting) => {
|
|||
mergeTag: field.key,
|
||||
mergeValue: field.defaultValue,
|
||||
['type' + (field.type || '').toString().trim().replace(/(?:^|\-)([a-z])/g, (m, c) => c.toUpperCase())]: true,
|
||||
groupTemplate: field.groupTemplate,
|
||||
options: (field.options || []).map(subField => {
|
||||
if (onlyExisting && subField.column && !valueList.hasOwnProperty(subField.column)) {
|
||||
// ignore missing values
|
||||
|
@ -431,7 +441,10 @@ module.exports.getRow = (fieldList, values, useDate, showAll, onlyExisting) => {
|
|||
};
|
||||
}).filter(subField => subField)
|
||||
};
|
||||
item.value = item.options.filter(subField => (showAll || subField.visible) && subField.value).map(subField => subField.name).join(', ');
|
||||
let subItems = item.options.filter(subField => (showAll || subField.visible) && subField.value).map(subField => subField.name);
|
||||
item.value = field.groupTemplate ? render(field.groupTemplate, {
|
||||
values: subItems
|
||||
}) : subItems.join(', ');
|
||||
item.mergeValue = item.value || field.defaultValue;
|
||||
row.push(item);
|
||||
break;
|
||||
|
@ -523,3 +536,9 @@ module.exports.getValues = (row, showAll) => {
|
|||
|
||||
return result;
|
||||
};
|
||||
|
||||
|
||||
function render(template, options) {
|
||||
let renderer = Handlebars.compile(template);
|
||||
return renderer(options);
|
||||
}
|
||||
|
|
|
@ -5,11 +5,18 @@ let log = require('npmlog');
|
|||
|
||||
let passport = require('passport');
|
||||
let LocalStrategy = require('passport-local').Strategy;
|
||||
let LdapStrategy = require('passport-ldapjs').Strategy;
|
||||
|
||||
let csrf = require('csurf');
|
||||
let bodyParser = require('body-parser');
|
||||
let users = require('./models/users');
|
||||
|
||||
let LdapStrategy;
|
||||
try {
|
||||
LdapStrategy = require('passport-ldapjs').Strategy; // eslint-disable-line global-require
|
||||
} catch (E) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
module.exports.csrfProtection = csrf({
|
||||
cookie: true
|
||||
});
|
||||
|
@ -61,12 +68,12 @@ module.exports.login = (req, res, next) => {
|
|||
})(req, res, next);
|
||||
};
|
||||
|
||||
if (config.ldap.enabled) {
|
||||
if (config.ldap.enabled && LdapStrategy) {
|
||||
log.info('Using LDAP auth');
|
||||
|
||||
var opts = {
|
||||
let opts = {
|
||||
server: {
|
||||
url: 'ldap://' + config.ldap.host + ':' + config.ldap.port,
|
||||
url: 'ldap://' + config.ldap.host + ':' + config.ldap.port
|
||||
},
|
||||
base: config.ldap.baseDN,
|
||||
search: {
|
||||
|
@ -76,7 +83,7 @@ if (config.ldap.enabled) {
|
|||
}
|
||||
};
|
||||
|
||||
passport.use(new LdapStrategy(opts, function (profile, done) {
|
||||
passport.use(new LdapStrategy(opts, (profile, done) => {
|
||||
users.findByUsername(profile.username, (err, user) => {
|
||||
if (err) {
|
||||
return done(err);
|
||||
|
@ -90,7 +97,7 @@ if (config.ldap.enabled) {
|
|||
}
|
||||
|
||||
return done(null, {
|
||||
id: id,
|
||||
id,
|
||||
username: profile.username
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue