| 
									
										
										
										
											2018-02-20 15:57:34 +01:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * An asynchronous bootstrap function that runs before | 
					
						
							|  |  |  |  * your application gets started. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This gives you an opportunity to set up your data model, | 
					
						
							|  |  |  |  * run jobs, or perform some special logic. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const path = require('path'); | 
					
						
							|  |  |  | const fs = require('fs'); | 
					
						
							| 
									
										
										
										
											2018-04-30 18:00:01 +02:00
										 |  |  | const _ = require('lodash'); | 
					
						
							| 
									
										
										
										
											2018-02-20 15:57:34 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | module.exports = async cb => { | 
					
						
							| 
									
										
										
										
											2018-02-21 17:18:33 +01:00
										 |  |  |   // set plugin store
 | 
					
						
							| 
									
										
										
										
											2018-02-20 15:57:34 +01:00
										 |  |  |   const pluginStore = strapi.store({ | 
					
						
							|  |  |  |     environment: strapi.config.environment, | 
					
						
							|  |  |  |     type: 'plugin', | 
					
						
							|  |  |  |     name: 'upload' | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-07 11:26:53 +01:00
										 |  |  |   strapi.plugins.upload.config.providers = []; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-06 15:49:11 +01:00
										 |  |  |   const loadProviders = (basePath, cb) => { | 
					
						
							|  |  |  |     fs.readdir(path.join(basePath, 'node_modules'), async (err, node_modules) => { | 
					
						
							|  |  |  |       // get all upload provider
 | 
					
						
							|  |  |  |       const uploads = _.filter(node_modules, (node_module) => { | 
					
						
							| 
									
										
										
										
											2018-11-27 17:30:35 +01:00
										 |  |  |         // DEPRECATED strapi-upload-* will be remove in next version
 | 
					
						
							|  |  |  |         return _.startsWith(node_module, 'strapi-provider-upload') || _.startsWith(node_module, 'strapi-upload'); | 
					
						
							| 
									
										
										
										
											2018-03-06 15:49:11 +01:00
										 |  |  |       }); | 
					
						
							| 
									
										
										
										
											2018-02-20 15:57:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-06 15:49:11 +01:00
										 |  |  |       // mount all providers to get configs
 | 
					
						
							|  |  |  |       _.forEach(uploads, (node_module) => { | 
					
						
							|  |  |  |         strapi.plugins.upload.config.providers.push( | 
					
						
							|  |  |  |           require(path.join(`${basePath}/node_modules/${node_module}`)) | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2018-02-20 15:57:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-06 15:49:11 +01:00
										 |  |  |       try { | 
					
						
							|  |  |  |         // if provider config not exit set one by default
 | 
					
						
							|  |  |  |         const config = await pluginStore.get({key: 'provider'}); | 
					
						
							| 
									
										
										
										
											2018-02-20 15:57:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-06 15:49:11 +01:00
										 |  |  |         if (!config) { | 
					
						
							|  |  |  |           const provider = _.find(strapi.plugins.upload.config.providers, {provider: 'local'}); | 
					
						
							| 
									
										
										
										
											2018-02-20 15:57:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-06 15:49:11 +01:00
										 |  |  |           const value = _.assign({}, provider, { | 
					
						
							|  |  |  |             enabled: true, | 
					
						
							|  |  |  |             // by default limit size to 1 GB
 | 
					
						
							|  |  |  |             sizeLimit: 1000000 | 
					
						
							|  |  |  |           }); | 
					
						
							| 
									
										
										
										
											2018-02-20 15:57:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-06 15:49:11 +01:00
										 |  |  |           await pluginStore.set({key: 'provider', value}); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } catch (err) { | 
					
						
							|  |  |  |         strapi.log.error(`Can't load ${config.provider} upload provider.`); | 
					
						
							| 
									
										
										
										
											2018-10-19 09:26:09 +02:00
										 |  |  |         strapi.log.warn(`Please install strapi-provider-upload-${config.provider} --save in ${path.join(strapi.config.appPath, 'plugins', 'upload')} folder.`); | 
					
						
							| 
									
										
										
										
											2018-03-06 15:49:11 +01:00
										 |  |  |         strapi.stop(); | 
					
						
							| 
									
										
										
										
											2018-02-20 15:57:34 +01:00
										 |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-06 15:49:11 +01:00
										 |  |  |       cb(); | 
					
						
							| 
									
										
										
										
											2018-02-20 15:57:34 +01:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2018-04-30 18:00:01 +02:00
										 |  |  |   }; | 
					
						
							| 
									
										
										
										
											2018-02-20 15:57:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-06 15:49:11 +01:00
										 |  |  |   // Load providers from the plugins' node_modules.
 | 
					
						
							|  |  |  |   loadProviders(path.join(strapi.config.appPath, 'plugins', 'upload'), () => { | 
					
						
							|  |  |  |     // Load providers from the root node_modules.
 | 
					
						
							|  |  |  |     loadProviders(path.join(strapi.config.appPath), cb); | 
					
						
							| 
									
										
										
										
											2018-02-20 15:57:34 +01:00
										 |  |  |   }); | 
					
						
							| 
									
										
										
										
											2018-03-06 15:49:11 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-20 15:57:34 +01:00
										 |  |  | }; |