2017-07-06 10:02:00 +02:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
module.exports = {
|
2017-07-10 11:40:41 +02:00
|
|
|
menu: {
|
|
|
|
sections: [
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'menu.section.global-settings',
|
2017-07-10 11:40:41 +02:00
|
|
|
items: [
|
|
|
|
{
|
|
|
|
slug: 'general',
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'menu.item.general',
|
2017-07-10 11:40:41 +02:00
|
|
|
icon: 'globe'
|
|
|
|
},
|
|
|
|
{
|
|
|
|
slug: 'languages',
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'menu.item.languages',
|
2017-07-10 11:40:41 +02:00
|
|
|
icon: 'language'
|
|
|
|
},
|
|
|
|
{
|
|
|
|
slug: 'advenced',
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'menu.item.advenced',
|
2017-07-10 11:40:41 +02:00
|
|
|
icon: 'cogs'
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'menu.section.environments',
|
2017-07-10 11:40:41 +02:00
|
|
|
items: [
|
|
|
|
{
|
|
|
|
slug: 'databases',
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'menu.item.databases',
|
2017-07-10 11:40:41 +02:00
|
|
|
icon: 'databases'
|
|
|
|
},
|
|
|
|
{
|
|
|
|
slug: 'security',
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'menu.item.security',
|
2017-07-10 11:40:41 +02:00
|
|
|
icon: 'shield'
|
|
|
|
},
|
|
|
|
{
|
|
|
|
slug: 'server',
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'menu.item.server',
|
2017-07-10 11:40:41 +02:00
|
|
|
icon: 'server'
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
|
|
|
|
general: {
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.general',
|
|
|
|
description: 'form.general.desc',
|
2017-07-10 11:40:41 +02:00
|
|
|
sections: [
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: '',
|
2017-07-10 11:40:41 +02:00
|
|
|
items: [
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.general.name',
|
2017-07-10 11:40:41 +02:00
|
|
|
target: 'package.name',
|
|
|
|
type: 'string',
|
|
|
|
value: strapi.config.name,
|
|
|
|
validations : {
|
|
|
|
maxLength: 255,
|
2017-07-10 18:00:50 +02:00
|
|
|
minLength: 5,
|
2017-07-10 11:40:41 +02:00
|
|
|
required: true
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.general.description',
|
2017-07-10 18:00:50 +02:00
|
|
|
target: 'package.description',
|
2017-07-10 11:40:41 +02:00
|
|
|
type: 'string',
|
|
|
|
value: strapi.config.description,
|
|
|
|
validations : {
|
|
|
|
maxLength: 255,
|
|
|
|
required: true
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'form.general.version',
|
2017-07-10 18:00:50 +02:00
|
|
|
target: 'package.version',
|
2017-07-10 11:40:41 +02:00
|
|
|
type: 'string',
|
|
|
|
value: strapi.config.version,
|
|
|
|
validations : {
|
|
|
|
maxLength: 255,
|
|
|
|
required: true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
|
|
|
|
security: env => {
|
|
|
|
return {
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.security',
|
|
|
|
description: 'form.security.desc',
|
2017-07-10 11:40:41 +02:00
|
|
|
sections: [
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.security.session',
|
2017-07-10 11:40:41 +02:00
|
|
|
items: [
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.security.session.key',
|
2017-07-10 11:40:41 +02:00
|
|
|
target: 'security.session.key',
|
|
|
|
type: 'string',
|
|
|
|
value: strapi.config.environments[env].security.session.key
|
|
|
|
},
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.security.session.maxAge',
|
2017-07-10 11:40:41 +02:00
|
|
|
target: 'security.session.maxAge',
|
|
|
|
type: 'number',
|
|
|
|
value: strapi.config.environments[env].security.session.maxAge
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: '',
|
2017-07-10 11:40:41 +02:00
|
|
|
items: [
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.security.xframe',
|
2017-07-10 11:40:41 +02:00
|
|
|
target: 'security.xframe',
|
|
|
|
type: 'enum',
|
|
|
|
value: strapi.config.environments[env].security.xframe,
|
|
|
|
items: [
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'server.xframe.deny',
|
2017-07-10 11:40:41 +02:00
|
|
|
value: 'DENY',
|
|
|
|
},
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'server.xframe.sameorigin',
|
2017-07-10 11:40:41 +02:00
|
|
|
value: 'SAMEORIGIN',
|
|
|
|
},
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'server.xframe.allow-from',
|
2017-07-10 11:40:41 +02:00
|
|
|
value: 'ALLOW-FROM',
|
|
|
|
},
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.security.xssProtection',
|
2017-07-10 11:40:41 +02:00
|
|
|
target: 'security.xssProtection',
|
|
|
|
type: 'boolean',
|
|
|
|
value: strapi.config.environments[env].security.xssProtection
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.security.cors',
|
2017-07-10 11:40:41 +02:00
|
|
|
items: [
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.security.cors.origin',
|
2017-07-10 11:40:41 +02:00
|
|
|
target: 'security.cors.origin',
|
|
|
|
type: 'string',
|
|
|
|
value: strapi.config.environments[env].security.cors.origin,
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
};
|
|
|
|
},
|
2017-07-06 10:02:00 +02:00
|
|
|
|
2017-07-10 11:40:41 +02:00
|
|
|
server: env => {
|
|
|
|
return {
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.server',
|
|
|
|
description: 'form.server.desc',
|
2017-07-10 11:40:41 +02:00
|
|
|
sections: [
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: '',
|
2017-07-10 11:40:41 +02:00
|
|
|
items: [
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.server.host',
|
2017-07-10 11:40:41 +02:00
|
|
|
target: 'server.host',
|
|
|
|
type: 'string',
|
|
|
|
value: strapi.config.environments[env].server.host
|
|
|
|
},
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.server.port',
|
2017-07-10 11:40:41 +02:00
|
|
|
target: 'server.port',
|
|
|
|
type: 'number',
|
|
|
|
value: strapi.config.environments[env].server.port
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.server.parser',
|
2017-07-10 11:40:41 +02:00
|
|
|
items: [
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.server.parser.xframe',
|
2017-07-10 11:40:41 +02:00
|
|
|
target: 'server.xframe',
|
|
|
|
type: 'enum',
|
|
|
|
value: strapi.config.environments[env].server.xframe,
|
|
|
|
items: [
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'server.xframe.deny',
|
2017-07-10 11:40:41 +02:00
|
|
|
value: 'DENY',
|
|
|
|
},
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'server.xframe.sameorigin',
|
2017-07-10 11:40:41 +02:00
|
|
|
value: 'SAMEORIGIN',
|
|
|
|
},
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'server.xframe.allow-from',
|
2017-07-10 11:40:41 +02:00
|
|
|
value: 'ALLOW-FROM',
|
|
|
|
},
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.server.xssProtection',
|
2017-07-10 11:40:41 +02:00
|
|
|
target: 'server.xssProtection',
|
|
|
|
type: 'boolean',
|
|
|
|
value: strapi.config.environments[env].server.xssProtection
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.server.cors',
|
2017-07-10 11:40:41 +02:00
|
|
|
items: [
|
|
|
|
{
|
2017-07-10 12:19:06 +02:00
|
|
|
name: 'form.server.cors.origin',
|
2017-07-10 11:40:41 +02:00
|
|
|
target: 'server.cors.origin',
|
|
|
|
type: 'string',
|
|
|
|
value: strapi.config.environments[env].server.cors.origin
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
};
|
2017-07-10 18:00:50 +02:00
|
|
|
},
|
|
|
|
|
|
|
|
getItems: model => {
|
|
|
|
let items = [];
|
|
|
|
_.forEach(model.sections, section => items = _.concat(items, section.items));
|
|
|
|
|
|
|
|
return items;
|
|
|
|
},
|
|
|
|
|
|
|
|
cleanParams: (params, items) => {
|
|
|
|
const cleanParams = {};
|
|
|
|
|
|
|
|
_.forEach(items, ({ target }) => _.has(params, target) ? _.set(cleanParams, target, _.get(params, target)) : '');
|
|
|
|
|
|
|
|
return cleanParams;
|
|
|
|
},
|
|
|
|
|
|
|
|
paramsValidation: (params, items) => {
|
|
|
|
let errors = [];
|
|
|
|
|
|
|
|
const checkType = (input, { type, target }) => {
|
|
|
|
if ((type === 'string' || type === 'text') && !_.isString(input)) errors.push({
|
|
|
|
target: target,
|
|
|
|
message: 'form.error.string'
|
|
|
|
});
|
|
|
|
|
|
|
|
if (type === 'number' && !_.isNumber(input)) errors.push({
|
|
|
|
target: target,
|
|
|
|
message: 'form.error.number'
|
|
|
|
});
|
|
|
|
|
|
|
|
if (type === 'boolean' && !_.isBoolean(input)) errors.push({
|
|
|
|
target: target,
|
|
|
|
message: 'form.error.number'
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
const checkValidations = (input, item) => {
|
|
|
|
_.forEach(item.validations, (value, key) => {
|
|
|
|
if (key === 'required' && (_.isNull(input) || _.isEmpty(input) || _.isUndefined(input))) errors.push({
|
|
|
|
target: item.target,
|
|
|
|
message: 'form.error.required'
|
|
|
|
});
|
|
|
|
|
|
|
|
if (key === 'max' && parseInt(input) > value) errors.push({
|
|
|
|
target: item.target,
|
|
|
|
message: 'form.error.max'
|
|
|
|
});
|
|
|
|
|
|
|
|
if (key === 'min' && parseInt(input) < value) errors.push({
|
|
|
|
target: item.target,
|
|
|
|
message: 'form.error.min'
|
|
|
|
});
|
|
|
|
|
|
|
|
if (key === 'maxLength' && input.length > value) errors.push({
|
|
|
|
target: item.target,
|
|
|
|
message: 'form.error.maxLength'
|
|
|
|
});
|
|
|
|
|
|
|
|
if (key === 'minLength' && input.length < value) errors.push({
|
|
|
|
target: item.target,
|
|
|
|
message: 'form.error.minLength'
|
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
_.forEach(items, item => {
|
|
|
|
if (_.has(params, item.target)) {
|
|
|
|
const input = _.get(params, item.target, null);
|
|
|
|
|
|
|
|
checkType(input, item)
|
|
|
|
checkValidations(input, item)
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
if (!_.isEmpty(errors)) {
|
|
|
|
const grpTarget = _.groupBy(errors, 'target');
|
|
|
|
|
|
|
|
errors = _.map(grpTarget, (errs, target) => {
|
|
|
|
return {
|
|
|
|
target,
|
|
|
|
messages: _.map(errs, err => err.message)
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
return errors;
|
2017-07-10 11:40:41 +02:00
|
|
|
}
|
2017-07-06 10:02:00 +02:00
|
|
|
};
|