diff --git a/packages/strapi-plugin-setings-manager/admin/src/translations/en.json b/packages/strapi-plugin-setings-manager/admin/src/translations/en.json index 0d5058c6af..161a908b3a 100644 --- a/packages/strapi-plugin-setings-manager/admin/src/translations/en.json +++ b/packages/strapi-plugin-setings-manager/admin/src/translations/en.json @@ -1,4 +1,45 @@ { "menu.section.global-settings": "Global settings", - "menu.section.environments": "Environments" + "menu.item.general": "General", + "menu.item.languages": "Languages", + "menu.item.advanced": "Advanced", + + "menu.section.environments": "Environments", + "menu.item.databases": "Databases", + "menu.item.security": "Security", + "menu.item.server": "Server", + + "form.general": "General", + "form.general.description": "Configure your general settings.", + + "form.general.name": "Name", + "form.general.description": "Description", + "form.general.version": "Version", + + "form.security": "Security", + "form.security.description": "Configure your security settings.", + + "form.security.session": "Session", + "form.security.session.key": "Secret key", + "form.security.session.maxAge": "Maximum age", + + "form.security.xframe": "Xframe", + "form.security.xframe.deny": "DENY", + "form.security.xframe.sameorigin": "SAMEORIGIN", + "form.security.xframe.allow-from": "ALLOW-FROM", + + "form.security.xssProtection": "xss Protection", + + "form.security.cors": "Cors", + "form.security.cors.origin": "Origin", + + "form.server": "Server", + "form.server.description": "Configure your server settings.", + + "form.server.host": "Host", + "form.server.port": "Port", + + "request.error.config": "Config file doesn't exist.", + "request.error.environment.required": "Environment is required.", + "request.error.environment.required": "Environment is unknow." } diff --git a/packages/strapi-plugin-setings-manager/admin/src/translations/fr.json b/packages/strapi-plugin-setings-manager/admin/src/translations/fr.json index 9e26dfeeb6..04d59ebce0 100644 --- a/packages/strapi-plugin-setings-manager/admin/src/translations/fr.json +++ b/packages/strapi-plugin-setings-manager/admin/src/translations/fr.json @@ -1 +1,45 @@ -{} \ No newline at end of file +{ + "menu.section.global-settings": "Configuration général", + "menu.item.general": "Général", + "menu.item.languages": "Langues", + "menu.item.advanced": "Avancé", + + "menu.section.environments": "Environnements", + "menu.item.databases": "Base de donnée", + "menu.item.security": "Sécurité", + "menu.item.server": "Serveur", + + "form.general": "Général", + "form.general.description": "Modification des configurations général.", + + "form.general.name": "Nom", + "form.general.description": "Description", + "form.general.version": "Version", + + "form.security": "Sécurité", + "form.security.description": "Modification des configurations de sécurité.", + + "form.security.session": "Session", + "form.security.session.key": "Clé secrète", + "form.security.session.maxAge": "Durée de vie ", + + "form.security.xframe": "Xframe", + "form.security.xframe.deny": "DENY", + "form.security.xframe.sameorigin": "SAMEORIGIN", + "form.security.xframe.allow-from": "ALLOW-FROM", + + "form.security.xssProtection": "Protection xss", + + "form.security.cors": "Cors", + "form.security.cors.origin": "Origin", + + "form.server": "Serveur", + "form.server.description": "Modification des configurations du serveur", + + "form.server.host": "Host", + "form.server.port": "Port", + + "request.error.config": "Le fichier de configuration n'éxiste pas.", + "request.error.environment.required": "L'environnement est obligatoire.", + "request.error.environment.required": "L'environnement est inconnu." +} diff --git a/packages/strapi-plugin-setings-manager/controllers/SettingsManager.js b/packages/strapi-plugin-setings-manager/controllers/SettingsManager.js index bb77c74439..37808d632b 100644 --- a/packages/strapi-plugin-setings-manager/controllers/SettingsManager.js +++ b/packages/strapi-plugin-setings-manager/controllers/SettingsManager.js @@ -17,11 +17,12 @@ module.exports = { const Service = strapi.plugins['settings-manager'].services.settingsmanager; const { slug, env } = ctx.params; - if (env && _.isEmpty(_.find(Service.getEnvironments(), { name: env }))) return ctx.badData('request.error.environment'); + if (env && _.isEmpty(_.find(Service.getEnvironments(), { name: env }))) return ctx.badData('request.error.environment.unknow'); const model = env ? Service[slug](env) : Service[slug]; if (_.isUndefined(model)) return ctx.badData('request.error.config'); + if (_.isFunction(model)) return ctx.badData('request.error.environment.required'); ctx.send(model); }, @@ -31,11 +32,12 @@ module.exports = { const { slug, env } = ctx.params; let params = ctx.request.body; - if (env && _.isEmpty(_.find(Service.getEnvironments(), { name: env }))) return ctx.badData('request.error.environment'); + if (env && _.isEmpty(_.find(Service.getEnvironments(), { name: env }))) return ctx.badData('request.error.environment.unknow'); const model = env ? Service[slug](env) : Service[slug]; - if (_.isUndefined(config)) return ctx.badData('request.error.config'); + if (_.isUndefined(model)) return ctx.badData('request.error.config'); + if (_.isFunction(model)) return ctx.badData('request.error.environment.required'); const items = Service.getItems(model); diff --git a/packages/strapi-plugin-setings-manager/services/SettingsManager.js b/packages/strapi-plugin-setings-manager/services/SettingsManager.js index 35c4fc8ee8..4efc1c784e 100644 --- a/packages/strapi-plugin-setings-manager/services/SettingsManager.js +++ b/packages/strapi-plugin-setings-manager/services/SettingsManager.js @@ -20,8 +20,8 @@ module.exports = { icon: 'language' }, { - slug: 'advenced', - name: 'menu.item.advenced', + slug: 'advanced', + name: 'menu.item.advanced', icon: 'cogs' } ] @@ -51,7 +51,7 @@ module.exports = { general: { name: 'form.general', - description: 'form.general.desc', + description: 'form.general.description', sections: [ { name: '', @@ -60,7 +60,7 @@ module.exports = { name: 'form.general.name', target: 'package.name', type: 'string', - value: strapi.config.name, + value: _.get(strapi.config, 'name', null), validations : { maxLength: 255, required: true @@ -70,7 +70,7 @@ module.exports = { name: 'form.general.description', target: 'package.description', type: 'string', - value: strapi.config.description, + value: _.get(strapi.config, 'description', null), validations : { maxLength: 255, required: true @@ -80,9 +80,9 @@ module.exports = { name: 'form.general.version', target: 'package.version', type: 'string', - value: strapi.config.version, + value: _.get(strapi.config, 'version', null), validations : { - maxLength: 255, + regex: '^(\\d+\\.)?(\\d+\\.)?(\\*|\\d+)$', required: true } } @@ -94,7 +94,7 @@ module.exports = { security: env => { return { name: 'form.security', - description: 'form.security.desc', + description: 'form.security.description', sections: [ { name: 'form.security.session', @@ -103,13 +103,16 @@ module.exports = { name: 'form.security.session.key', target: 'security.session.key', type: 'string', - value: strapi.config.environments[env].security.session.key + value: _.get(strapi.config, `environments.${env}.security.session.key`, null), + validations: { + required: true + } }, { name: 'form.security.session.maxAge', target: 'security.session.maxAge', type: 'number', - value: strapi.config.environments[env].security.session.maxAge + value: _.get(strapi.config, `environments.${env}.security.session.maxAge`, null) } ] }, @@ -120,18 +123,18 @@ module.exports = { name: 'form.security.xframe', target: 'security.xframe', type: 'enum', - value: strapi.config.environments[env].security.xframe, + value: _.get(strapi.config, `environments.${env}.security.xframe`, null), items: [ { - name: 'server.xframe.deny', + name: 'form.security.xframe.deny', value: 'DENY', }, { - name: 'server.xframe.sameorigin', + name: 'form.security.xframe.sameorigin', value: 'SAMEORIGIN', }, { - name: 'server.xframe.allow-from', + name: 'form.security.xframe.allow-from', value: 'ALLOW-FROM', }, ] @@ -140,7 +143,7 @@ module.exports = { name: 'form.security.xssProtection', target: 'security.xssProtection', type: 'boolean', - value: strapi.config.environments[env].security.xssProtection + value: _.get(strapi.config, `environments.${env}.security.xssProtection`, null) } ] }, @@ -151,7 +154,7 @@ module.exports = { name: 'form.security.cors.origin', target: 'security.cors.origin', type: 'string', - value: strapi.config.environments[env].security.cors.origin, + value: _.get(strapi.config, `environments.${env}.security.cors.origin`, null) } ] } @@ -162,7 +165,7 @@ module.exports = { server: env => { return { name: 'form.server', - description: 'form.server.desc', + description: 'form.server.description', sections: [ { name: '', @@ -171,55 +174,13 @@ module.exports = { name: 'form.server.host', target: 'server.host', type: 'string', - value: strapi.config.environments[env].server.host + value: _.get(strapi.config, `environments.${env}.server.host`, null) }, { name: 'form.server.port', target: 'server.port', type: 'number', - value: strapi.config.environments[env].server.port - } - ] - }, - { - name: 'form.server.parser', - items: [ - { - name: 'form.server.parser.xframe', - target: 'server.xframe', - type: 'enum', - value: strapi.config.environments[env].server.xframe, - items: [ - { - name: 'server.xframe.deny', - value: 'DENY', - }, - { - name: 'server.xframe.sameorigin', - value: 'SAMEORIGIN', - }, - { - name: 'server.xframe.allow-from', - value: 'ALLOW-FROM', - }, - ] - }, - { - name: 'form.server.xssProtection', - target: 'server.xssProtection', - type: 'boolean', - value: strapi.config.environments[env].server.xssProtection - } - ] - }, - { - name: 'form.server.cors', - items: [ - { - name: 'form.server.cors.origin', - target: 'server.cors.origin', - type: 'string', - value: strapi.config.environments[env].server.cors.origin + value: _.get(strapi.config, `environments.${env}.server.port`, null) } ] } @@ -278,6 +239,11 @@ module.exports = { message: 'form.error.validation.required' }); + if (key === 'regex' && !new RegExp(value).test(input)) errors.push({ + target: item.target, + message: 'form.error.validation.regex' + }); + if (key === 'max' && parseInt(input) > value) errors.push({ target: item.target, message: 'form.error.validation.max'