From 703f671ce351cfe589e2d69ba1ab2128c2ef7a92 Mon Sep 17 00:00:00 2001 From: Jim Laurie Date: Wed, 12 Jul 2017 12:21:03 +0200 Subject: [PATCH 1/4] Fix config variable test --- .../controllers/SettingsManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/strapi-plugin-setings-manager/controllers/SettingsManager.js b/packages/strapi-plugin-setings-manager/controllers/SettingsManager.js index bb77c74439..37a36022ac 100644 --- a/packages/strapi-plugin-setings-manager/controllers/SettingsManager.js +++ b/packages/strapi-plugin-setings-manager/controllers/SettingsManager.js @@ -35,7 +35,7 @@ module.exports = { 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'); const items = Service.getItems(model); From de1f4e1243737119bb6e85927f69843c38b418b9 Mon Sep 17 00:00:00 2001 From: Jim Laurie Date: Wed, 12 Jul 2017 16:04:36 +0200 Subject: [PATCH 2/4] Set null if unknow config - add regex validation --- .../controllers/SettingsManager.js | 6 ++-- .../services/SettingsManager.js | 36 +++++++++++-------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/packages/strapi-plugin-setings-manager/controllers/SettingsManager.js b/packages/strapi-plugin-setings-manager/controllers/SettingsManager.js index 37a36022ac..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(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..04d59fcfd8 100644 --- a/packages/strapi-plugin-setings-manager/services/SettingsManager.js +++ b/packages/strapi-plugin-setings-manager/services/SettingsManager.js @@ -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 } } @@ -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,7 +123,7 @@ 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', @@ -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) } ] } @@ -171,13 +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 + value: _.get(strapi.config, `environments.${env}.server.port`, null) } ] }, @@ -188,7 +191,7 @@ module.exports = { name: 'form.server.parser.xframe', target: 'server.xframe', type: 'enum', - value: strapi.config.environments[env].server.xframe, + value: _.get(strapi.config, `environments.${env}.server.xframe`, null), items: [ { name: 'server.xframe.deny', @@ -208,7 +211,7 @@ module.exports = { name: 'form.server.xssProtection', target: 'server.xssProtection', type: 'boolean', - value: strapi.config.environments[env].server.xssProtection + value: _.get(strapi.config, `environments.${env}.server.xssProtection`, null) } ] }, @@ -219,7 +222,7 @@ module.exports = { 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.cors.origin`, null) } ] } @@ -278,6 +281,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' From 1f28231ed345315f75aab1f73945a355e86ab6ec Mon Sep 17 00:00:00 2001 From: Jim Laurie Date: Wed, 12 Jul 2017 16:37:07 +0200 Subject: [PATCH 3/4] Update i18n files --- .../admin/src/translations/en.json | 39 ++++++++++++- .../admin/src/translations/fr.json | 42 +++++++++++++- .../services/SettingsManager.js | 58 +++---------------- 3 files changed, 87 insertions(+), 52 deletions(-) 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..59c5f04b77 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,41 @@ { "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" } 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..0351caf42f 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,41 @@ -{} \ 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" +} diff --git a/packages/strapi-plugin-setings-manager/services/SettingsManager.js b/packages/strapi-plugin-setings-manager/services/SettingsManager.js index 04d59fcfd8..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: '', @@ -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', @@ -126,15 +126,15 @@ module.exports = { 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', }, ] @@ -165,7 +165,7 @@ module.exports = { server: env => { return { name: 'form.server', - description: 'form.server.desc', + description: 'form.server.description', sections: [ { name: '', @@ -183,48 +183,6 @@ module.exports = { value: _.get(strapi.config, `environments.${env}.server.port`, null) } ] - }, - { - name: 'form.server.parser', - items: [ - { - name: 'form.server.parser.xframe', - target: 'server.xframe', - type: 'enum', - value: _.get(strapi.config, `environments.${env}.server.xframe`, null), - 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: _.get(strapi.config, `environments.${env}.server.xssProtection`, null) - } - ] - }, - { - name: 'form.server.cors', - items: [ - { - name: 'form.server.cors.origin', - target: 'server.cors.origin', - type: 'string', - value: _.get(strapi.config, `environments.${env}.server.cors.origin`, null) - } - ] } ] }; From d5eaa4341b7d7545070ea41565699bf7a7fc8688 Mon Sep 17 00:00:00 2001 From: Jim Laurie Date: Wed, 12 Jul 2017 16:44:11 +0200 Subject: [PATCH 4/4] Add error messages i18n --- .../admin/src/translations/en.json | 6 +++++- .../admin/src/translations/fr.json | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) 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 59c5f04b77..161a908b3a 100644 --- a/packages/strapi-plugin-setings-manager/admin/src/translations/en.json +++ b/packages/strapi-plugin-setings-manager/admin/src/translations/en.json @@ -37,5 +37,9 @@ "form.server.description": "Configure your server settings.", "form.server.host": "Host", - "form.server.port": "Port" + "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 0351caf42f..04d59ebce0 100644 --- a/packages/strapi-plugin-setings-manager/admin/src/translations/fr.json +++ b/packages/strapi-plugin-setings-manager/admin/src/translations/fr.json @@ -37,5 +37,9 @@ "form.server.description": "Modification des configurations du serveur", "form.server.host": "Host", - "form.server.port": "Port" + "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." }