| 
									
										
										
										
											2017-07-06 10:02:00 +02:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-11 11:41:00 +02:00
										 |  |  | const fs = require('fs'); | 
					
						
							|  |  |  | const path = require('path'); | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  | const _ = require('lodash'); | 
					
						
							| 
									
										
										
										
											2019-01-28 16:23:47 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | const shell = require('shelljs'); | 
					
						
							| 
									
										
										
										
											2017-07-11 11:41:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-06 10:02:00 +02:00
										 |  |  | 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: [ | 
					
						
							| 
									
										
										
										
											2018-05-01 12:56:51 +02:00
										 |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-08-09 17:39:54 +02:00
										 |  |  |             slug: 'application', | 
					
						
							|  |  |  |             name: 'menu.item.application', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             icon: 'globe', | 
					
						
							| 
									
										
										
										
											2017-07-10 11:40:41 +02:00
										 |  |  |           }, | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             slug: 'languages', | 
					
						
							| 
									
										
										
										
											2017-07-10 12:19:06 +02:00
										 |  |  |             name: 'menu.item.languages', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             icon: 'language', | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2017-07-10 11:40:41 +02:00
										 |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							| 
									
										
										
										
											2017-07-10 12:19:06 +02:00
										 |  |  |         name: 'menu.section.environments', | 
					
						
							| 
									
										
										
										
											2017-07-10 11:40:41 +02:00
										 |  |  |         items: [ | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             slug: 'databases', | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |             name: 'menu.item.database', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             icon: 'database', | 
					
						
							| 
									
										
										
										
											2017-07-10 11:40:41 +02:00
										 |  |  |           }, | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |           { | 
					
						
							|  |  |  |             slug: 'request', | 
					
						
							|  |  |  |             name: 'menu.item.request', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             icon: 'compress', | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |           }, | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             slug: 'response', | 
					
						
							|  |  |  |             name: 'menu.item.response', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             icon: 'upload', | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |           }, | 
					
						
							| 
									
										
										
										
											2017-07-10 11:40:41 +02:00
										 |  |  |           { | 
					
						
							|  |  |  |             slug: 'security', | 
					
						
							| 
									
										
										
										
											2017-07-10 12:19:06 +02:00
										 |  |  |             name: 'menu.item.security', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             icon: 'shield', | 
					
						
							| 
									
										
										
										
											2017-07-10 11:40:41 +02:00
										 |  |  |           }, | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             slug: 'server', | 
					
						
							| 
									
										
										
										
											2017-07-10 12:19:06 +02:00
										 |  |  |             name: 'menu.item.server', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             icon: 'server', | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							| 
									
										
										
										
											2017-07-10 11:40:41 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-05 14:16:32 +01:00
										 |  |  |   application: async () => { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |     const application = await strapi | 
					
						
							|  |  |  |       .store({ | 
					
						
							|  |  |  |         environment: '', | 
					
						
							|  |  |  |         type: 'core', | 
					
						
							|  |  |  |         key: 'application', | 
					
						
							|  |  |  |       }) | 
					
						
							|  |  |  |       .get(); | 
					
						
							| 
									
										
										
										
											2018-02-05 14:16:32 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |       name: 'form.application.name', | 
					
						
							|  |  |  |       description: 'form.application.description', | 
					
						
							|  |  |  |       sections: [ | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           name: '', | 
					
						
							|  |  |  |           items: [ | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |               name: 'form.application.item.name', | 
					
						
							|  |  |  |               target: 'application.name', | 
					
						
							|  |  |  |               source: 'db', | 
					
						
							|  |  |  |               type: 'string', | 
					
						
							|  |  |  |               value: _.get(application, 'name', null), | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               validations: { | 
					
						
							| 
									
										
										
										
											2018-02-05 14:16:32 +01:00
										 |  |  |                 maxLength: 255, | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 required: true, | 
					
						
							|  |  |  |               }, | 
					
						
							| 
									
										
										
										
											2018-02-05 14:16:32 +01:00
										 |  |  |             }, | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |               name: 'form.application.item.description', | 
					
						
							|  |  |  |               target: 'application.description', | 
					
						
							|  |  |  |               source: 'db', | 
					
						
							|  |  |  |               type: 'string', | 
					
						
							|  |  |  |               value: _.get(application, 'description', null), | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               validations: { | 
					
						
							| 
									
										
										
										
											2018-02-05 14:16:32 +01:00
										 |  |  |                 maxLength: 255, | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 required: true, | 
					
						
							|  |  |  |               }, | 
					
						
							| 
									
										
										
										
											2018-02-05 14:16:32 +01:00
										 |  |  |             }, | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |               name: 'form.application.item.version', | 
					
						
							|  |  |  |               target: 'package.version', | 
					
						
							|  |  |  |               type: 'string', | 
					
						
							|  |  |  |               value: _.get(strapi.config, 'info.version', null), | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               validations: { | 
					
						
							| 
									
										
										
										
											2018-02-05 14:16:32 +01:00
										 |  |  |                 regex: '^(\\d+\\.)?(\\d+\\.)?(\\*|\\d+)$', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 required: true, | 
					
						
							|  |  |  |               }, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           ], | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       ], | 
					
						
							| 
									
										
										
										
											2018-05-01 12:56:51 +02:00
										 |  |  |     }; | 
					
						
							| 
									
										
										
										
											2018-02-05 14:16:32 +01:00
										 |  |  |   }, | 
					
						
							| 
									
										
										
										
											2017-07-10 11:40:41 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-10 16:00:01 +02:00
										 |  |  |   request: env => ({ | 
					
						
							|  |  |  |     name: 'form.request.name', | 
					
						
							|  |  |  |     description: 'form.request.description', | 
					
						
							| 
									
										
										
										
											2017-07-13 11:59:56 +02:00
										 |  |  |     sections: [ | 
					
						
							|  |  |  |       { | 
					
						
							| 
									
										
										
										
											2017-08-22 13:45:04 +02:00
										 |  |  |         name: 'form.request.item.logger', | 
					
						
							| 
									
										
										
										
											2017-07-13 11:59:56 +02:00
										 |  |  |         items: [ | 
					
						
							|  |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-08-10 16:00:01 +02:00
										 |  |  |             name: 'form.request.item.logger.level', | 
					
						
							|  |  |  |             target: 'request.logger.level', | 
					
						
							| 
									
										
										
										
											2017-07-13 11:59:56 +02:00
										 |  |  |             type: 'string', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.request.logger.level`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-08-10 16:00:01 +02:00
										 |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							| 
									
										
										
										
											2017-08-10 16:00:01 +02:00
										 |  |  |           }, | 
					
						
							| 
									
										
										
										
											2017-07-26 15:33:41 +02:00
										 |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-08-10 16:00:01 +02:00
										 |  |  |             name: 'form.request.item.logger.exposeInContext', | 
					
						
							|  |  |  |             target: 'request.logger.exposeInContext', | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |             type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.request.logger.exposeInContext`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |           }, | 
					
						
							| 
									
										
										
										
											2017-07-26 15:33:41 +02:00
										 |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-08-10 16:00:01 +02:00
										 |  |  |             name: 'form.request.item.logger.requests', | 
					
						
							|  |  |  |             target: 'request.logger.requests', | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |             type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.request.logger.requests`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2017-08-08 10:15:38 +02:00
										 |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         name: 'form.request.item.parser', | 
					
						
							|  |  |  |         items: [ | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |           { | 
					
						
							|  |  |  |             name: 'form.request.item.parser.enabled', | 
					
						
							|  |  |  |             target: 'request.parser.enabled', | 
					
						
							| 
									
										
										
										
											2017-07-26 15:33:41 +02:00
										 |  |  |             type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.request.parser.enabled`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |             items: [ | 
					
						
							|  |  |  |               { | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |                 name: 'form.request.item.parser.multipart', | 
					
						
							|  |  |  |                 target: 'request.parser.multipart', | 
					
						
							|  |  |  |                 type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 value: _.get( | 
					
						
							|  |  |  |                   strapi.config, | 
					
						
							|  |  |  |                   `environments.${env}.request.parser.multipart`, | 
					
						
							|  |  |  |                   null | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 validations: { | 
					
						
							|  |  |  |                   required: true, | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |               }, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2017-08-08 10:15:38 +02:00
										 |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							| 
									
										
										
										
											2017-08-10 16:00:01 +02:00
										 |  |  |         name: 'form.request.item.router', | 
					
						
							| 
									
										
										
										
											2017-08-08 10:15:38 +02:00
										 |  |  |         items: [ | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-08-10 16:00:01 +02:00
										 |  |  |             name: 'form.request.item.router.prefix', | 
					
						
							|  |  |  |             target: 'request.router.prefix', | 
					
						
							| 
									
										
										
										
											2017-08-11 09:58:14 +02:00
										 |  |  |             type: 'string', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.request.router.prefix`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2019-06-19 11:51:44 +02:00
										 |  |  |             validations: {}, | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |   }), | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   response: env => ({ | 
					
						
							|  |  |  |     name: 'form.response.name', | 
					
						
							|  |  |  |     description: 'form.response.description', | 
					
						
							|  |  |  |     sections: [ | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         name: '', | 
					
						
							|  |  |  |         items: [ | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             name: 'form.response.item.gzip.enabled', | 
					
						
							|  |  |  |             target: 'response.gzip.enabled', | 
					
						
							|  |  |  |             type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.response.gzip.enabled`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2019-01-23 16:15:04 +01:00
										 |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         name: '', | 
					
						
							|  |  |  |         items: [ | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |           { | 
					
						
							|  |  |  |             name: 'form.response.item.responseTime.enabled', | 
					
						
							|  |  |  |             target: 'response.responseTime.enabled', | 
					
						
							|  |  |  |             type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.response.responseTime.enabled`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-07-26 15:33:41 +02:00
										 |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2019-01-23 16:15:04 +01:00
										 |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         name: '', | 
					
						
							|  |  |  |         items: [ | 
					
						
							| 
									
										
										
										
											2019-01-22 16:47:17 +01:00
										 |  |  |           { | 
					
						
							|  |  |  |             name: 'form.response.item.poweredBy.enabled', | 
					
						
							|  |  |  |             target: 'response.poweredBy.enabled', | 
					
						
							|  |  |  |             type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.response.poweredBy.enabled`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2019-01-23 14:35:10 +01:00
										 |  |  |             items: [ | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 name: 'form.response.item.poweredBy.value', | 
					
						
							|  |  |  |                 target: 'response.poweredBy.value', | 
					
						
							|  |  |  |                 type: 'string', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 value: _.get( | 
					
						
							|  |  |  |                   strapi.config, | 
					
						
							|  |  |  |                   `environments.${env}.response.poweredBy.value`, | 
					
						
							|  |  |  |                   null | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 validations: { | 
					
						
							|  |  |  |                   required: true, | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |               }, | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |   }), | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   security: env => ({ | 
					
						
							|  |  |  |     name: 'form.security.name', | 
					
						
							|  |  |  |     description: 'form.security.description', | 
					
						
							|  |  |  |     sections: [ | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |       { | 
					
						
							|  |  |  |         name: 'form.security.item.csrf', | 
					
						
							|  |  |  |         items: [ | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |             name: 'form.security.item.csrf.enabled', | 
					
						
							|  |  |  |             target: 'security.csrf.enabled', | 
					
						
							|  |  |  |             type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.security.csrf.enabled`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |             items: [ | 
					
						
							|  |  |  |               { | 
					
						
							| 
									
										
										
										
											2017-07-31 16:51:21 +02:00
										 |  |  |                 name: 'form.security.item.csrf.key', | 
					
						
							|  |  |  |                 target: 'security.csrf.key', | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |                 type: 'string', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 value: _.get( | 
					
						
							|  |  |  |                   strapi.config, | 
					
						
							|  |  |  |                   `environments.${env}.security.csrf.key`, | 
					
						
							|  |  |  |                   null | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 validations: {}, | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |               }, | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 name: 'form.security.item.csrf.secret', | 
					
						
							|  |  |  |                 target: 'security.csrf.secret', | 
					
						
							|  |  |  |                 type: 'string', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 value: _.get( | 
					
						
							|  |  |  |                   strapi.config, | 
					
						
							|  |  |  |                   `environments.${env}.security.csrf.secret`, | 
					
						
							|  |  |  |                   null | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 validations: {}, | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |               }, | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 name: 'form.security.item.csrf.cookie', | 
					
						
							|  |  |  |                 target: 'security.csrf.cookie', | 
					
						
							|  |  |  |                 type: 'string', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 value: _.get( | 
					
						
							|  |  |  |                   strapi.config, | 
					
						
							|  |  |  |                   `environments.${env}.security.csrf.cookie`, | 
					
						
							|  |  |  |                   null | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 validations: {}, | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |               }, | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 name: 'form.security.item.csrf.angular', | 
					
						
							|  |  |  |                 target: 'security.csrf.angular', | 
					
						
							|  |  |  |                 type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 value: _.get( | 
					
						
							|  |  |  |                   strapi.config, | 
					
						
							|  |  |  |                   `environments.${env}.security.csrf.angular`, | 
					
						
							|  |  |  |                   null | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 validations: {}, | 
					
						
							|  |  |  |               }, | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |             ], | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         name: 'form.security.item.p3p', | 
					
						
							|  |  |  |         items: [ | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |             name: 'form.security.item.p3p.enabled', | 
					
						
							|  |  |  |             target: 'security.p3p.enabled', | 
					
						
							|  |  |  |             type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.security.p3p.enabled`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |             items: [ | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 name: 'form.security.item.p3p.value', | 
					
						
							|  |  |  |                 target: 'security.p3p.value', | 
					
						
							|  |  |  |                 type: 'string', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 value: _.get( | 
					
						
							|  |  |  |                   strapi.config, | 
					
						
							|  |  |  |                   `environments.${env}.security.p3p.value`, | 
					
						
							|  |  |  |                   null | 
					
						
							|  |  |  |                 ), | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |                 validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                   required: true, | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |               }, | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |             ], | 
					
						
							| 
									
										
										
										
											2017-07-20 15:08:03 +02:00
										 |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |         name: 'form.security.item.hsts', | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |         items: [ | 
					
						
							|  |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |             name: 'form.security.item.hsts.enabled', | 
					
						
							| 
									
										
										
										
											2017-08-01 11:26:38 +02:00
										 |  |  |             target: 'security.hsts.enabled', | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |             type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.security.hsts.enabled`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |             items: [ | 
					
						
							|  |  |  |               { | 
					
						
							| 
									
										
										
										
											2017-08-01 11:26:38 +02:00
										 |  |  |                 name: 'form.security.item.hsts.maxAge', | 
					
						
							|  |  |  |                 target: 'security.hsts.maxAge', | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |                 type: 'number', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 value: _.get( | 
					
						
							|  |  |  |                   strapi.config, | 
					
						
							|  |  |  |                   `environments.${env}.security.hsts.maxAge`, | 
					
						
							|  |  |  |                   null | 
					
						
							|  |  |  |                 ), | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |                 validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                   required: true, | 
					
						
							|  |  |  |                 }, | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |               }, | 
					
						
							|  |  |  |               { | 
					
						
							| 
									
										
										
										
											2017-08-01 11:26:38 +02:00
										 |  |  |                 name: 'form.security.item.hsts.includeSubDomains', | 
					
						
							|  |  |  |                 target: 'security.hsts.includeSubDomains', | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |                 type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 value: _.get( | 
					
						
							|  |  |  |                   strapi.config, | 
					
						
							|  |  |  |                   `environments.${env}.security.hsts.includeSubDomains`, | 
					
						
							|  |  |  |                   null | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 validations: {}, | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |               }, | 
					
						
							|  |  |  |               { | 
					
						
							| 
									
										
										
										
											2017-08-01 11:26:38 +02:00
										 |  |  |                 name: 'form.security.item.hsts.preload', | 
					
						
							|  |  |  |                 target: 'security.hsts.preload', | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |                 type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 value: _.get( | 
					
						
							|  |  |  |                   strapi.config, | 
					
						
							|  |  |  |                   `environments.${env}.security.hsts.preload`, | 
					
						
							|  |  |  |                   null | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 validations: {}, | 
					
						
							|  |  |  |               }, | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |             ], | 
					
						
							|  |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         name: 'form.security.item.xframe', | 
					
						
							|  |  |  |         items: [ | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             name: 'form.security.item.xframe.enabled', | 
					
						
							|  |  |  |             target: 'security.xframe.enabled', | 
					
						
							|  |  |  |             type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.security.xframe.enabled`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |             items: [ | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 name: 'form.security.item.xframe.value', | 
					
						
							| 
									
										
										
										
											2017-08-04 17:47:38 +02:00
										 |  |  |                 target: 'security.xframe.value', | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |                 type: 'enum', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 value: _.get( | 
					
						
							|  |  |  |                   strapi.config, | 
					
						
							|  |  |  |                   `environments.${env}.security.xframe.value`, | 
					
						
							|  |  |  |                   null | 
					
						
							|  |  |  |                 ), | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |                 items: [ | 
					
						
							|  |  |  |                   { | 
					
						
							|  |  |  |                     name: 'form.security.item.xframe.deny', | 
					
						
							|  |  |  |                     value: 'DENY', | 
					
						
							|  |  |  |                   }, | 
					
						
							|  |  |  |                   { | 
					
						
							|  |  |  |                     name: 'form.security.item.xframe.sameorigin', | 
					
						
							|  |  |  |                     value: 'SAMEORIGIN', | 
					
						
							|  |  |  |                   }, | 
					
						
							|  |  |  |                   { | 
					
						
							|  |  |  |                     name: 'form.security.item.xframe.allow-from', | 
					
						
							|  |  |  |                     value: 'ALLOW-FROM', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                     items: [ | 
					
						
							|  |  |  |                       { | 
					
						
							|  |  |  |                         name: '', | 
					
						
							|  |  |  |                         target: 'security.xframe.value.nested', | 
					
						
							|  |  |  |                         type: 'string', | 
					
						
							|  |  |  |                         value: '', | 
					
						
							|  |  |  |                         validations: { | 
					
						
							|  |  |  |                           required: true, | 
					
						
							|  |  |  |                         }, | 
					
						
							|  |  |  |                       }, | 
					
						
							|  |  |  |                     ], | 
					
						
							|  |  |  |                   }, | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |                 ], | 
					
						
							|  |  |  |                 validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                   required: true, | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |               }, | 
					
						
							| 
									
										
										
										
											2017-07-19 13:35:43 +02:00
										 |  |  |             ], | 
					
						
							|  |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         name: 'form.security.item.xssProtection', | 
					
						
							|  |  |  |         items: [ | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |             name: 'form.security.item.xssProtection.enabled', | 
					
						
							|  |  |  |             target: 'security.xssProtection.enabled', | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |             type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.security.xssProtection.enabled`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |             items: [ | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 name: 'form.security.item.xssProtection.mode', | 
					
						
							|  |  |  |                 target: 'security.xssProtection.mode', | 
					
						
							|  |  |  |                 type: 'string', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 value: _.get( | 
					
						
							|  |  |  |                   strapi.config, | 
					
						
							|  |  |  |                   `environments.${env}.security.xssProtection.mode`, | 
					
						
							|  |  |  |                   null | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 validations: {}, | 
					
						
							|  |  |  |               }, | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |             ], | 
					
						
							| 
									
										
										
										
											2017-07-19 13:35:43 +02:00
										 |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         name: 'form.security.item.cors', | 
					
						
							|  |  |  |         items: [ | 
					
						
							| 
									
										
										
										
											2017-07-26 15:33:41 +02:00
										 |  |  |           { | 
					
						
							|  |  |  |             name: 'form.security.item.cors.enabled', | 
					
						
							|  |  |  |             target: 'security.cors.enabled', | 
					
						
							|  |  |  |             type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.security.cors.enabled`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |             items: [ | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 name: 'form.security.item.cors.origin', | 
					
						
							|  |  |  |                 target: 'security.cors.origin', | 
					
						
							|  |  |  |                 type: 'string', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 value: _.get( | 
					
						
							|  |  |  |                   strapi.config, | 
					
						
							|  |  |  |                   `environments.${env}.security.cors.origin`, | 
					
						
							|  |  |  |                   null | 
					
						
							|  |  |  |                 ), | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |                 validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                   required: true, | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |               }, | 
					
						
							| 
									
										
										
										
											2017-07-28 16:39:34 +02:00
										 |  |  |             ], | 
					
						
							| 
									
										
										
										
											2017-07-20 15:08:03 +02:00
										 |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |   }), | 
					
						
							| 
									
										
										
										
											2017-07-06 10:02:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |   server: env => ({ | 
					
						
							|  |  |  |     name: 'form.server.name', | 
					
						
							|  |  |  |     description: 'form.server.description', | 
					
						
							|  |  |  |     sections: [ | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         name: '', | 
					
						
							|  |  |  |         items: [ | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             name: 'form.server.item.host', | 
					
						
							|  |  |  |             target: 'server.host', | 
					
						
							|  |  |  |             type: 'string', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.server.host`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |             validations: {}, | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |           }, | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             name: 'form.server.item.port', | 
					
						
							|  |  |  |             target: 'server.port', | 
					
						
							|  |  |  |             type: 'number', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.server.port`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |             validations: {}, | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |           }, | 
					
						
							| 
									
										
										
										
											2018-08-27 07:06:24 -07:00
										 |  |  |           { | 
					
						
							| 
									
										
										
										
											2018-08-28 03:08:41 -07:00
										 |  |  |             name: 'form.server.item.cron', | 
					
						
							|  |  |  |             target: 'server.cron.enabled', | 
					
						
							|  |  |  |             type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.server.cron.enabled`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2018-08-29 08:01:55 -07:00
										 |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         name: 'form.server.item.proxy', | 
					
						
							|  |  |  |         items: [ | 
					
						
							| 
									
										
										
										
											2018-08-28 03:08:41 -07:00
										 |  |  |           { | 
					
						
							| 
									
										
										
										
											2018-08-29 08:01:55 -07:00
										 |  |  |             name: 'form.server.item.proxy.enable', | 
					
						
							| 
									
										
										
										
											2018-08-27 07:06:24 -07:00
										 |  |  |             target: 'server.proxy.enabled', | 
					
						
							|  |  |  |             type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.server.proxy.enabled`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2018-08-29 08:01:55 -07:00
										 |  |  |             items: [ | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 name: 'form.server.item.proxy.host', | 
					
						
							|  |  |  |                 target: 'server.proxy.host', | 
					
						
							|  |  |  |                 type: 'string', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 value: _.get( | 
					
						
							|  |  |  |                   strapi.config, | 
					
						
							|  |  |  |                   `environments.${env}.server.proxy.host`, | 
					
						
							|  |  |  |                   null | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 validations: {}, | 
					
						
							| 
									
										
										
										
											2018-08-29 08:01:55 -07:00
										 |  |  |               }, | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 name: 'form.server.item.proxy.port', | 
					
						
							|  |  |  |                 target: 'server.proxy.port', | 
					
						
							|  |  |  |                 type: 'number', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 value: _.get( | 
					
						
							|  |  |  |                   strapi.config, | 
					
						
							|  |  |  |                   `environments.${env}.server.proxy.port`, | 
					
						
							|  |  |  |                   null | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 validations: {}, | 
					
						
							| 
									
										
										
										
											2018-08-29 23:35:44 -07:00
										 |  |  |               }, | 
					
						
							|  |  |  |               { | 
					
						
							|  |  |  |                 name: 'form.server.item.proxy.ssl', | 
					
						
							|  |  |  |                 target: 'server.proxy.ssl', | 
					
						
							|  |  |  |                 type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 value: _.get( | 
					
						
							|  |  |  |                   strapi.config, | 
					
						
							|  |  |  |                   `environments.${env}.server.proxy.ssl`, | 
					
						
							|  |  |  |                   null | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 validations: {}, | 
					
						
							|  |  |  |               }, | 
					
						
							| 
									
										
										
										
											2018-08-29 08:01:55 -07:00
										 |  |  |             ], | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             validations: {}, | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |   }), | 
					
						
							| 
									
										
										
										
											2017-07-10 18:00:50 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |   i18n: () => ({ | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |     name: 'form.language.name', | 
					
						
							|  |  |  |     description: 'form.language.description', | 
					
						
							| 
									
										
										
										
											2017-07-19 14:42:45 +02:00
										 |  |  |     sections: [ | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         name: '', | 
					
						
							|  |  |  |         items: [ | 
					
						
							|  |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |             name: 'form.language.choose', | 
					
						
							| 
									
										
										
										
											2017-08-04 15:23:21 +02:00
										 |  |  |             target: 'language.defaultLocale', | 
					
						
							| 
									
										
										
										
											2017-07-19 18:35:59 +02:00
										 |  |  |             type: 'select', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             items: strapi.plugins['settings-manager'].services.languages, | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							| 
									
										
										
										
											2017-07-19 18:35:59 +02:00
										 |  |  |   }), | 
					
						
							| 
									
										
										
										
											2017-07-19 14:42:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-26 16:15:31 +02:00
										 |  |  |   databases: (name, env) => ({ | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |     name: 'form.database.name', | 
					
						
							|  |  |  |     description: 'form.database.description', | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |     sections: [ | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         name: '', | 
					
						
							|  |  |  |         items: [ | 
					
						
							| 
									
										
										
										
											2017-07-26 12:43:46 +02:00
										 |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |             name: 'form.database.item.name', | 
					
						
							| 
									
										
										
										
											2017-08-03 10:59:37 +02:00
										 |  |  |             target: `database.connections.${name}.name`, | 
					
						
							| 
									
										
										
										
											2017-07-26 12:43:46 +02:00
										 |  |  |             type: 'string', | 
					
						
							|  |  |  |             value: name, | 
					
						
							|  |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							| 
									
										
										
										
											2017-07-26 12:43:46 +02:00
										 |  |  |           }, | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |             name: 'form.database.item.connector', | 
					
						
							| 
									
										
										
										
											2017-08-03 10:59:37 +02:00
										 |  |  |             target: `database.connections.${name}.connector`, | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |             type: 'string', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.database.connections.${name}.connector`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |           }, | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             name: 'form.database.item.client', | 
					
						
							|  |  |  |             target: `database.connections.${name}.settings.client`, | 
					
						
							|  |  |  |             type: 'select', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.database.connections.${name}.settings.client`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-07-28 16:14:50 +02:00
										 |  |  |             items: [ | 
					
						
							|  |  |  |               { | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |                 name: 'form.database.item.provider.mongo', | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |                 value: 'mongo', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 port: 27017, | 
					
						
							| 
									
										
										
										
											2017-07-28 16:14:50 +02:00
										 |  |  |               }, | 
					
						
							|  |  |  |               { | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |                 name: 'form.database.item.provider.postgres', | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |                 value: 'postgres', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 port: 5432, | 
					
						
							| 
									
										
										
										
											2017-07-28 16:14:50 +02:00
										 |  |  |               }, | 
					
						
							|  |  |  |               { | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |                 name: 'form.database.item.provider.mysql', | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |                 value: 'mysql', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 port: 3306, | 
					
						
							| 
									
										
										
										
											2017-07-28 16:14:50 +02:00
										 |  |  |               }, | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |               { | 
					
						
							|  |  |  |                 name: 'form.database.item.provider.redis', | 
					
						
							|  |  |  |                 value: 'redis', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 port: 6379, | 
					
						
							|  |  |  |               }, | 
					
						
							| 
									
										
										
										
											2017-07-28 16:14:50 +02:00
										 |  |  |             ], | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |           }, | 
					
						
							|  |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |             name: 'form.database.item.host', | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |             target: `database.connections.${name}.settings.host`, | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |             type: 'string', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.database.connections.${name}.settings.host`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |           }, | 
					
						
							|  |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-08-04 12:03:22 +02:00
										 |  |  |             name: 'form.database.item.port', | 
					
						
							|  |  |  |             target: `database.connections.${name}.settings.port`, | 
					
						
							|  |  |  |             type: 'number', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.database.connections.${name}.settings.port`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |           }, | 
					
						
							|  |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |             name: 'form.database.item.database', | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |             target: `database.connections.${name}.settings.database`, | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |             type: 'string', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.database.connections.${name}.settings.database`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							| 
									
										
										
										
											2017-08-09 19:47:39 +02:00
										 |  |  |           }, | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |             name: 'form.database.item.username', | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |             target: `database.connections.${name}.settings.username`, | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |             type: 'string', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.database.connections.${name}.settings.username`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |             validations: {}, | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |           }, | 
					
						
							|  |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |             name: 'form.database.item.password', | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |             target: `database.connections.${name}.settings.password`, | 
					
						
							| 
									
										
										
										
											2017-08-03 14:16:58 +02:00
										 |  |  |             type: 'password', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.database.connections.${name}.settings.password`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |             validations: {}, | 
					
						
							| 
									
										
										
										
											2018-05-01 12:56:51 +02:00
										 |  |  |           }, | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             name: 'form.database.item.authenticationDatabase', | 
					
						
							|  |  |  |             target: `database.connections.${name}.options.authenticationDatabase`, | 
					
						
							|  |  |  |             type: 'string', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.database.connections.${name}.options.authenticationDatabase`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |             validations: {}, | 
					
						
							| 
									
										
										
										
											2018-05-01 12:56:51 +02:00
										 |  |  |           }, | 
					
						
							|  |  |  |           { | 
					
						
							|  |  |  |             name: 'form.database.item.ssl', | 
					
						
							|  |  |  |             target: `database.connections.${name}.options.ssl`, | 
					
						
							|  |  |  |             type: 'boolean', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: [true, 'true'].includes( | 
					
						
							|  |  |  |               _.get( | 
					
						
							|  |  |  |                 strapi.config, | 
					
						
							|  |  |  |                 `environments.${env}.database.connections.${name}.options.ssl`, | 
					
						
							|  |  |  |                 false | 
					
						
							|  |  |  |               ) | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |             validations: {}, | 
					
						
							| 
									
										
										
										
											2018-05-01 12:56:51 +02:00
										 |  |  |           }, | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |         ], | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         name: '', | 
					
						
							|  |  |  |         items: [ | 
					
						
							|  |  |  |           { | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |             name: 'form.database.item.default', | 
					
						
							| 
									
										
										
										
											2018-05-01 12:56:51 +02:00
										 |  |  |             target: 'database.defaultConnection', | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |             type: 'string', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             value: _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.database.defaultConnection`, | 
					
						
							|  |  |  |               null | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |             validations: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               required: true, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							| 
									
										
										
										
											2017-07-25 16:37:50 +02:00
										 |  |  |   }), | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-11 14:56:52 +02:00
										 |  |  |   getEnvironments: () => { | 
					
						
							|  |  |  |     return _.map(_.keys(strapi.config.environments), environment => { | 
					
						
							|  |  |  |       return { | 
					
						
							|  |  |  |         name: environment, | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |         active: strapi.config.environment === environment, | 
					
						
							| 
									
										
										
										
											2017-07-26 17:39:41 +02:00
										 |  |  |       }; | 
					
						
							| 
									
										
										
										
											2017-07-11 14:56:52 +02:00
										 |  |  |     }); | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-19 14:31:17 +02:00
										 |  |  |   getLanguages: () => { | 
					
						
							| 
									
										
										
										
											2017-08-02 13:17:40 +02:00
										 |  |  |     return _.map(strapi.config.language.locales, language => { | 
					
						
							| 
									
										
										
										
											2017-07-19 14:31:17 +02:00
										 |  |  |       return { | 
					
						
							|  |  |  |         name: language, | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |         active: strapi.config.language.defaultLocale === language, | 
					
						
							| 
									
										
										
										
											2017-07-26 17:39:41 +02:00
										 |  |  |       }; | 
					
						
							| 
									
										
										
										
											2017-07-19 14:31:17 +02:00
										 |  |  |     }); | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-25 15:11:11 +02:00
										 |  |  |   getDatabases: env => { | 
					
						
							|  |  |  |     const databases = []; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-11 10:44:04 +02:00
										 |  |  |     const databasesUsed = []; | 
					
						
							|  |  |  |     _.forEach(strapi.models, model => { | 
					
						
							|  |  |  |       databasesUsed.push(model.connection); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |     _.forEach( | 
					
						
							|  |  |  |       strapi.config.environments[env].database.connections, | 
					
						
							|  |  |  |       (connection, name) => | 
					
						
							|  |  |  |         databases.push({ | 
					
						
							|  |  |  |           connector: _.get(connection, 'connector'), | 
					
						
							|  |  |  |           letter: strapi.plugins[ | 
					
						
							|  |  |  |             'settings-manager' | 
					
						
							|  |  |  |           ].services.settingsmanager.getClientLetter( | 
					
						
							|  |  |  |             _.get(connection, 'settings.client') | 
					
						
							|  |  |  |           ), | 
					
						
							|  |  |  |           color: strapi.plugins[ | 
					
						
							|  |  |  |             'settings-manager' | 
					
						
							|  |  |  |           ].services.settingsmanager.getClientColor( | 
					
						
							|  |  |  |             _.get(connection, 'settings.client') | 
					
						
							|  |  |  |           ), | 
					
						
							|  |  |  |           name, | 
					
						
							|  |  |  |           host: _.get(connection, 'settings.host'), | 
					
						
							|  |  |  |           database: _.get(connection, 'settings.database'), | 
					
						
							|  |  |  |           active: | 
					
						
							|  |  |  |             _.get( | 
					
						
							|  |  |  |               strapi.config, | 
					
						
							|  |  |  |               `environments.${env}.database.defaultConnection` | 
					
						
							|  |  |  |             ) === name, | 
					
						
							|  |  |  |           isUsed: _.includes(databasesUsed, name), | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |     ); | 
					
						
							| 
									
										
										
										
											2017-07-25 15:11:11 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return databases; | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |   getClientConnector: client => { | 
					
						
							| 
									
										
										
										
											2018-04-20 17:59:47 +02:00
										 |  |  |     const bookshelfClients = ['postgres', 'mysql']; | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |     const mongooseClients = ['mongo']; | 
					
						
							|  |  |  |     const redisClients = ['redis']; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     let connector; | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |     if (_.indexOf(bookshelfClients, client) !== -1) | 
					
						
							|  |  |  |       connector = 'strapi-hook-bookshelf'; | 
					
						
							|  |  |  |     if (_.indexOf(mongooseClients, client) !== -1) | 
					
						
							|  |  |  |       connector = 'strapi-hook-mongoose'; | 
					
						
							| 
									
										
										
										
											2018-07-11 16:23:14 +02:00
										 |  |  |     if (_.indexOf(redisClients, client) !== -1) connector = 'strapi-hook-redis'; | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return connector; | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getClientColor: client => { | 
					
						
							|  |  |  |     switch (client) { | 
					
						
							|  |  |  |       case 'postgres': | 
					
						
							|  |  |  |         return '#ffb500'; | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |       case 'mysql': | 
					
						
							|  |  |  |         return '#4479a1'; | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |       case 'redis': | 
					
						
							|  |  |  |         return '#ff5d00'; | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |       case 'mongo': | 
					
						
							|  |  |  |         return '#43b121'; | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |       default: | 
					
						
							|  |  |  |         return '#000000'; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getClientLetter: client => { | 
					
						
							|  |  |  |     switch (client) { | 
					
						
							|  |  |  |       case 'postgres': | 
					
						
							|  |  |  |         return 'PG'; | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |       case 'mysql': | 
					
						
							|  |  |  |         return 'MY'; | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-02 17:17:54 +02:00
										 |  |  |       default: | 
					
						
							|  |  |  |         return _.upperCase(_.head(client)); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-02 13:56:03 +02:00
										 |  |  |   getItems: model => { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |     return _.flatten( | 
					
						
							|  |  |  |       _.map(model.sections, section => { | 
					
						
							|  |  |  |         let items = section.items; | 
					
						
							| 
									
										
										
										
											2017-08-02 13:56:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |         _.forEach(items, item => { | 
					
						
							|  |  |  |           if (item.type === 'boolean' && _.has(item, 'items')) | 
					
						
							|  |  |  |             items = _.concat(items, item.items); | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2017-08-02 13:56:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |         return items; | 
					
						
							|  |  |  |       }) | 
					
						
							|  |  |  |     ); | 
					
						
							| 
									
										
										
										
											2017-08-02 13:56:03 +02:00
										 |  |  |   }, | 
					
						
							| 
									
										
										
										
											2017-07-10 18:00:50 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   cleanParams: (params, items) => { | 
					
						
							|  |  |  |     const cleanParams = {}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |     _.forEach(items, ({ target }) => | 
					
						
							|  |  |  |       _.has(params, target) | 
					
						
							|  |  |  |         ? _.set(cleanParams, target, _.get(params, target)) | 
					
						
							|  |  |  |         : '' | 
					
						
							|  |  |  |     ); | 
					
						
							| 
									
										
										
										
											2017-07-10 18:00:50 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return cleanParams; | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |   formatErrors: errors => | 
					
						
							|  |  |  |     _.map(_.groupBy(errors, 'target'), (errs, target) => { | 
					
						
							|  |  |  |       return { | 
					
						
							|  |  |  |         target, | 
					
						
							|  |  |  |         messages: _.map(errs, err => { | 
					
						
							|  |  |  |           return { | 
					
						
							|  |  |  |             id: err.message, | 
					
						
							|  |  |  |             params: _.get(err, 'params', undefined), | 
					
						
							|  |  |  |           }; | 
					
						
							|  |  |  |         }), | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |     }), | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-10 18:00:50 +02:00
										 |  |  |   paramsValidation: (params, items) => { | 
					
						
							|  |  |  |     let errors = []; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-20 15:08:03 +02:00
										 |  |  |     const reformat = (value, format) => { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |       if (format === 'number') | 
					
						
							|  |  |  |         try { | 
					
						
							|  |  |  |           return parseFloat(value); | 
					
						
							|  |  |  |         } catch (e) { | 
					
						
							|  |  |  |           return null; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2017-07-20 15:08:03 +02:00
										 |  |  |       if (format === 'boolean') return value === 'true'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       return value; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-19 18:41:33 +02:00
										 |  |  |     const checkType = (input, { type, target, items }) => { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |       if ( | 
					
						
							|  |  |  |         (type === 'string' || type === 'text' || type === 'password') && | 
					
						
							|  |  |  |         !_.isString(input) | 
					
						
							|  |  |  |       ) | 
					
						
							|  |  |  |         return errors.push({ | 
					
						
							|  |  |  |           target: target, | 
					
						
							|  |  |  |           message: 'request.error.type.string', | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2017-07-10 18:00:50 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |       if (type === 'number' && !_.isNumber(input)) | 
					
						
							|  |  |  |         return errors.push({ | 
					
						
							|  |  |  |           target: target, | 
					
						
							|  |  |  |           message: 'request.error.type.number', | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2017-07-10 18:00:50 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |       if (type === 'boolean' && !_.isBoolean(input)) | 
					
						
							|  |  |  |         return errors.push({ | 
					
						
							|  |  |  |           target: target, | 
					
						
							|  |  |  |           message: 'request.error.type.boolean', | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2017-07-19 18:41:33 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |       if (type === 'select' && !_.find(items, { value: input })) | 
					
						
							|  |  |  |         return errors.push({ | 
					
						
							|  |  |  |           target: target, | 
					
						
							|  |  |  |           message: 'request.error.type.select', | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2017-07-20 15:08:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-26 17:39:41 +02:00
										 |  |  |       if (type === 'enum' && !_.find(items, { value: input })) { | 
					
						
							|  |  |  |         const key = input.split('.')[0]; | 
					
						
							|  |  |  |         input = _.drop(input.split('.')).join('.'); | 
					
						
							| 
									
										
										
										
											2017-07-20 15:08:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-26 17:39:41 +02:00
										 |  |  |         const item = _.find(items, { value: key }); | 
					
						
							| 
									
										
										
										
											2017-07-20 15:08:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |         if (!item) | 
					
						
							|  |  |  |           return errors.push({ | 
					
						
							|  |  |  |             target: target, | 
					
						
							|  |  |  |             message: 'request.error.type.enum', | 
					
						
							|  |  |  |           }); | 
					
						
							| 
									
										
										
										
											2017-07-20 15:08:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-26 17:39:41 +02:00
										 |  |  |         input = reformat(input, item.type); | 
					
						
							|  |  |  |         params[target] = input; | 
					
						
							| 
									
										
										
										
											2017-07-20 15:08:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-26 17:39:41 +02:00
										 |  |  |         _.forEach(item.items, subItem => { | 
					
						
							|  |  |  |           subItem.target = target; | 
					
						
							|  |  |  |           if (_.has(params, subItem.target)) { | 
					
						
							|  |  |  |             const input = _.get(params, subItem.target, null); | 
					
						
							| 
									
										
										
										
											2017-07-20 15:08:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-26 17:39:41 +02:00
										 |  |  |             checkType(input, subItem); | 
					
						
							|  |  |  |             checkValidations(input, subItem); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2017-07-20 15:08:03 +02:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2017-07-10 18:00:50 +02:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const checkValidations = (input, item) => { | 
					
						
							|  |  |  |       _.forEach(item.validations, (value, key) => { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |         if ( | 
					
						
							|  |  |  |           key === 'required' && | 
					
						
							|  |  |  |           (_.isNull(input) || | 
					
						
							|  |  |  |             (_.isString(input) && _.isEmpty(input)) || | 
					
						
							|  |  |  |             _.isUndefined(input)) | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |           errors.push({ | 
					
						
							|  |  |  |             target: item.target, | 
					
						
							|  |  |  |             message: 'request.error.validation.required', | 
					
						
							|  |  |  |           }); | 
					
						
							| 
									
										
										
										
											2017-07-10 18:00:50 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |         if (key === 'regex' && !new RegExp(value).test(input)) | 
					
						
							|  |  |  |           errors.push({ | 
					
						
							|  |  |  |             target: item.target, | 
					
						
							|  |  |  |             message: 'request.error.validation.regex', | 
					
						
							|  |  |  |           }); | 
					
						
							| 
									
										
										
										
											2017-07-12 16:04:36 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |         if (key === 'max' && parseInt(input) > value) | 
					
						
							|  |  |  |           errors.push({ | 
					
						
							|  |  |  |             target: item.target, | 
					
						
							|  |  |  |             message: 'request.error.validation.max', | 
					
						
							|  |  |  |           }); | 
					
						
							| 
									
										
										
										
											2017-07-10 18:00:50 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |         if (key === 'min' && parseInt(input) < value) | 
					
						
							|  |  |  |           errors.push({ | 
					
						
							|  |  |  |             target: item.target, | 
					
						
							|  |  |  |             message: 'request.error.validation.min', | 
					
						
							|  |  |  |           }); | 
					
						
							| 
									
										
										
										
											2017-07-10 18:00:50 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |         if (key === 'maxLength' && input.length > value) | 
					
						
							|  |  |  |           errors.push({ | 
					
						
							|  |  |  |             target: item.target, | 
					
						
							|  |  |  |             message: 'request.error.validation.maxLength', | 
					
						
							|  |  |  |           }); | 
					
						
							| 
									
										
										
										
											2017-07-10 18:00:50 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |         if (key === 'minLength' && input.length < value) | 
					
						
							|  |  |  |           errors.push({ | 
					
						
							|  |  |  |             target: item.target, | 
					
						
							|  |  |  |             message: 'request.error.validation.minLength', | 
					
						
							|  |  |  |           }); | 
					
						
							| 
									
										
										
										
											2017-07-10 18:00:50 +02:00
										 |  |  |       }); | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     _.forEach(items, item => { | 
					
						
							|  |  |  |       if (_.has(params, item.target)) { | 
					
						
							|  |  |  |         const input = _.get(params, item.target, null); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-19 09:52:29 +02:00
										 |  |  |         checkType(input, item); | 
					
						
							|  |  |  |         checkValidations(input, item); | 
					
						
							| 
									
										
										
										
											2017-07-10 18:00:50 +02:00
										 |  |  |       } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-20 15:08:03 +02:00
										 |  |  |     return [params, errors]; | 
					
						
							| 
									
										
										
										
											2017-07-11 11:41:00 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-05 14:16:32 +01:00
										 |  |  |   updateSettings: async (params, items, env = '') => { | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |     const appPath = strapi.config.appPath; | 
					
						
							|  |  |  |     const errors = []; | 
					
						
							| 
									
										
										
										
											2017-07-11 11:41:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-05 14:16:32 +01:00
										 |  |  |     async function asyncForEach(array, callback) { | 
					
						
							|  |  |  |       for (let index = 0; index < array.length; index++) { | 
					
						
							|  |  |  |         await callback(array[index], index, array); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await asyncForEach(items, async ({ target, source }) => { | 
					
						
							| 
									
										
										
										
											2017-07-11 11:41:00 +02:00
										 |  |  |       if (_.has(params, target)) { | 
					
						
							| 
									
										
										
										
											2017-08-04 15:23:21 +02:00
										 |  |  |         let input = _.get(params, target, null); | 
					
						
							| 
									
										
										
										
											2017-07-11 11:41:00 +02:00
										 |  |  |         const [file, ...objPath] = target.split('.'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-05 14:16:32 +01:00
										 |  |  |         if (source === 'db') { | 
					
						
							| 
									
										
										
										
											2018-02-06 13:10:43 +01:00
										 |  |  |           const store = strapi.store({ | 
					
						
							|  |  |  |             environment: env, | 
					
						
							|  |  |  |             type: 'core', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             key: file, | 
					
						
							| 
									
										
										
										
											2018-02-06 13:10:43 +01:00
										 |  |  |           }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           const data = await store.get(); | 
					
						
							| 
									
										
										
										
											2018-02-05 14:16:32 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |           _.set(data, objPath, input); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |           await store.set({ value: data }); | 
					
						
							| 
									
										
										
										
											2018-02-05 14:16:32 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |           return; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |         if (target === 'language.defaultLocale') | 
					
						
							|  |  |  |           input = _.lowerCase(input).replace(/ /g, '_'); | 
					
						
							| 
									
										
										
										
											2017-08-04 15:23:21 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |         const filePath = | 
					
						
							|  |  |  |           file === 'package' | 
					
						
							|  |  |  |             ? path.join(appPath, 'package.json') | 
					
						
							|  |  |  |             : path.join( | 
					
						
							|  |  |  |                 appPath, | 
					
						
							|  |  |  |                 'config', | 
					
						
							|  |  |  |                 `${env ? `environments/${env}` : ''}`, | 
					
						
							|  |  |  |                 `${_.replace(file, '.', '/')}.json` | 
					
						
							|  |  |  |               ); | 
					
						
							| 
									
										
										
										
											2017-07-11 11:41:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |         try { | 
					
						
							| 
									
										
										
										
											2017-07-17 14:09:38 +02:00
										 |  |  |           const fileContent = require(filePath); | 
					
						
							| 
									
										
										
										
											2017-07-11 11:41:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |           _.set(fileContent, objPath, input); | 
					
						
							| 
									
										
										
										
											2017-07-11 11:41:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-26 17:55:24 +02:00
										 |  |  |           try { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             fs.writeFileSync( | 
					
						
							|  |  |  |               filePath, | 
					
						
							|  |  |  |               JSON.stringify(fileContent, null, 2), | 
					
						
							|  |  |  |               'utf8' | 
					
						
							|  |  |  |             ); | 
					
						
							| 
									
										
										
										
											2017-07-26 17:55:24 +02:00
										 |  |  |           } catch (e) { | 
					
						
							|  |  |  |             errors.push({ | 
					
						
							|  |  |  |               target, | 
					
						
							|  |  |  |               message: 'request.error.config', | 
					
						
							|  |  |  |               params: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 filePath: filePath, | 
					
						
							|  |  |  |               }, | 
					
						
							| 
									
										
										
										
											2017-07-26 17:55:24 +02:00
										 |  |  |             }); | 
					
						
							|  |  |  |           } | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |         } catch (e) { | 
					
						
							|  |  |  |           errors.push({ | 
					
						
							|  |  |  |             target, | 
					
						
							| 
									
										
										
										
											2017-07-17 14:09:38 +02:00
										 |  |  |             message: 'request.error.config', | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |             params: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               filePath: filePath, | 
					
						
							|  |  |  |             }, | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  |           }); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2017-07-11 11:41:00 +02:00
										 |  |  |       } | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2017-07-13 17:09:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return errors; | 
					
						
							| 
									
										
										
										
											2017-07-28 16:14:50 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   installDependency: (params, name) => { | 
					
						
							| 
									
										
										
										
											2017-11-01 16:52:00 +01:00
										 |  |  |     const clientsDependencies = { | 
					
						
							|  |  |  |       postgres: 'pg', | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |       mysql: 'mysql', | 
					
						
							| 
									
										
										
										
											2017-11-01 16:52:00 +01:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |     const client = _.get( | 
					
						
							|  |  |  |       clientsDependencies, | 
					
						
							|  |  |  |       _.get(params, `database.connections.${name}.settings.client`) | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |     const installedClient = | 
					
						
							|  |  |  |       _.indexOf(_.keys(strapi.config.info.dependencies), client) !== -1; | 
					
						
							| 
									
										
										
										
											2017-08-03 10:59:37 +02:00
										 |  |  |     const connector = _.get(params, `database.connections.${name}.connector`); | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |     const installedConnector = | 
					
						
							|  |  |  |       _.indexOf(_.keys(strapi.config.info.dependencies), connector) !== -1; | 
					
						
							| 
									
										
										
										
											2017-07-28 16:14:50 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-01 16:52:00 +01:00
										 |  |  |     if (connector && !installedConnector) { | 
					
						
							| 
									
										
										
										
											2017-11-02 13:34:56 +01:00
										 |  |  |       strapi.log.info(`Installing ${connector} dependency ...`); | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |       shell.exec(`npm install ${connector}@${strapi.config.info.strapi}`, { | 
					
						
							|  |  |  |         silent: true, | 
					
						
							|  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2017-11-01 16:52:00 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (client && !installedClient) { | 
					
						
							| 
									
										
										
										
											2017-11-02 13:34:56 +01:00
										 |  |  |       strapi.log.info(`Installing ${client} dependency ...`); | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |       shell.exec(`npm install ${client}`, { silent: true }); | 
					
						
							| 
									
										
										
										
											2017-11-01 16:52:00 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2017-08-09 17:39:54 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   cleanDependency: (env, config) => { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |     const availableConnectors = [ | 
					
						
							|  |  |  |       'strapi-hook-mongoose', | 
					
						
							|  |  |  |       'strapi-hook-bookshelf', | 
					
						
							|  |  |  |       'strapi-hook-redis', | 
					
						
							|  |  |  |     ]; | 
					
						
							| 
									
										
										
										
											2017-08-09 17:39:54 +02:00
										 |  |  |     let usedConnectors = []; | 
					
						
							|  |  |  |     const errors = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     _.forEach(_.keys(strapi.config.environments), environment => { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |       let connections = | 
					
						
							|  |  |  |         strapi.config.environments[environment].database.connections; | 
					
						
							| 
									
										
										
										
											2017-08-09 17:39:54 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |       if (environment === env) { | 
					
						
							|  |  |  |         connections = config.database.connections; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       _.forEach(connections, connection => { | 
					
						
							| 
									
										
										
										
											2017-08-11 11:36:33 +02:00
										 |  |  |         if (_.get(connection, 'connector')) { | 
					
						
							|  |  |  |           usedConnectors.push(connection.connector); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2017-08-09 17:39:54 +02:00
										 |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     usedConnectors = _.uniq(usedConnectors); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     _.forEach(availableConnectors, connector => { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |       const installed = | 
					
						
							|  |  |  |         _.indexOf(_.keys(strapi.config.info.dependencies), connector) !== -1; | 
					
						
							| 
									
										
										
										
											2017-08-09 17:39:54 +02:00
										 |  |  |       const used = _.indexOf(usedConnectors, connector) !== -1; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       if (installed && !used) { | 
					
						
							|  |  |  |         const filePath = path.join(strapi.config.appPath, 'package.json'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         try { | 
					
						
							|  |  |  |           const fileContent = require(filePath); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           _.set(fileContent, `dependencies.${connector}`, undefined); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           try { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             fs.writeFileSync( | 
					
						
							|  |  |  |               filePath, | 
					
						
							|  |  |  |               JSON.stringify(fileContent, null, 2), | 
					
						
							|  |  |  |               'utf8' | 
					
						
							|  |  |  |             ); | 
					
						
							| 
									
										
										
										
											2017-08-09 17:39:54 +02:00
										 |  |  |           } catch (e) { | 
					
						
							|  |  |  |             errors.push({ | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               target: connector, | 
					
						
							| 
									
										
										
										
											2017-08-09 17:39:54 +02:00
										 |  |  |               message: 'request.error.config', | 
					
						
							|  |  |  |               params: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |                 filePath: filePath, | 
					
						
							|  |  |  |               }, | 
					
						
							| 
									
										
										
										
											2017-08-09 17:39:54 +02:00
										 |  |  |             }); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } catch (e) { | 
					
						
							|  |  |  |           errors.push({ | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |             target: connector, | 
					
						
							| 
									
										
										
										
											2017-08-09 17:39:54 +02:00
										 |  |  |             message: 'request.error.config', | 
					
						
							|  |  |  |             params: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               filePath: filePath, | 
					
						
							|  |  |  |             }, | 
					
						
							| 
									
										
										
										
											2017-08-09 17:39:54 +02:00
										 |  |  |           }); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return errors; | 
					
						
							| 
									
										
										
										
											2017-08-11 11:36:33 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   getModelPath: model => { | 
					
						
							|  |  |  |     let searchFilePath; | 
					
						
							|  |  |  |     const errors = []; | 
					
						
							|  |  |  |     const searchFileName = `${model}.settings.json`; | 
					
						
							|  |  |  |     const apiPath = path.join(strapi.config.appPath, 'api'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     let apis; | 
					
						
							|  |  |  |     try { | 
					
						
							|  |  |  |       apis = fs.readdirSync(apiPath); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       _.forEach(apis, api => { | 
					
						
							|  |  |  |         const modelsPath = path.join(apiPath, api, 'models'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         let models; | 
					
						
							|  |  |  |         try { | 
					
						
							|  |  |  |           models = fs.readdirSync(modelsPath); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |           const modelIndex = _.indexOf( | 
					
						
							|  |  |  |             _.map(models, model => _.toLower(model)), | 
					
						
							|  |  |  |             searchFileName | 
					
						
							|  |  |  |           ); | 
					
						
							| 
									
										
										
										
											2017-08-11 11:36:33 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |           if (modelIndex !== -1) | 
					
						
							|  |  |  |             searchFilePath = `${modelsPath}/${models[modelIndex]}`; | 
					
						
							| 
									
										
										
										
											2017-08-11 11:36:33 +02:00
										 |  |  |         } catch (e) { | 
					
						
							|  |  |  |           errors.push({ | 
					
						
							|  |  |  |             id: 'request.error.folder.read', | 
					
						
							|  |  |  |             params: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |               folderPath: modelsPath, | 
					
						
							|  |  |  |             }, | 
					
						
							| 
									
										
										
										
											2017-08-11 11:36:33 +02:00
										 |  |  |           }); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     } catch (e) { | 
					
						
							|  |  |  |       errors.push({ | 
					
						
							|  |  |  |         id: 'request.error.folder.read', | 
					
						
							|  |  |  |         params: { | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |           folderPath: apiPath, | 
					
						
							|  |  |  |         }, | 
					
						
							| 
									
										
										
										
											2017-08-11 11:36:33 +02:00
										 |  |  |       }); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return [searchFilePath, errors]; | 
					
						
							| 
									
										
										
										
											2019-05-29 16:09:19 +02:00
										 |  |  |   }, | 
					
						
							| 
									
										
										
										
											2017-07-06 10:02:00 +02:00
										 |  |  | }; |