diff --git a/docs/3.x.x/configurations/configurations.md b/docs/3.x.x/configurations/configurations.md index 107e2ad26b..088db392cb 100644 --- a/docs/3.x.x/configurations/configurations.md +++ b/docs/3.x.x/configurations/configurations.md @@ -347,6 +347,9 @@ The session doesn't work with `mongo` as a client. The package that we should us - `enabled` (boolean): Enable or not GZIP response compression. - `responseTime` - `enabled` (boolean): Enable or not `X-Response-Time header` to response. Default value: `false`. + - `poweredBy` + - `enabled` (boolean): Enable or not `X-Powered-By` header to response. Default value: `true`. + - `value` (string): The value of the header. Default value: `Strapi ` *** diff --git a/docs/3.x.x/guides/filters.md b/docs/3.x.x/guides/filters.md index 315401fd59..c4760cfc01 100644 --- a/docs/3.x.x/guides/filters.md +++ b/docs/3.x.x/guides/filters.md @@ -24,6 +24,7 @@ Easily filter results according to fields values. - `_gt`: Greater than - `_lte`: Lower than or equal to - `_gte`: Greater than or equal to + - `_in`: Include in array - `_contains`: Contains - `_containss`: Contains case sensitive @@ -37,6 +38,9 @@ Find products having a price equal or greater than `3`. `GET /products?price_gte=3` +Find multiple product with id 3, 6, 8 +`GET /products?id_in=3&id_in=6&id_in=8` + ::: note You can't use filter to have specific results inside relation, like "Find users and only their posts older than yesterday" as example. If you need it, you can modify or create your own service or use [GraphQL](./graphql.md#query-api). ::: diff --git a/packages/strapi-generate-new/files/config/environments/development/response.json b/packages/strapi-generate-new/files/config/environments/development/response.json index 0f3acf8fcd..d6898c30bb 100644 --- a/packages/strapi-generate-new/files/config/environments/development/response.json +++ b/packages/strapi-generate-new/files/config/environments/development/response.json @@ -4,5 +4,9 @@ }, "responseTime": { "enabled": false + }, + "poweredBy": { + "enabled": true, + "value": "Strapi " } } diff --git a/packages/strapi-generate-new/files/config/environments/production/database.json b/packages/strapi-generate-new/files/config/environments/production/database.json deleted file mode 100644 index 3075fabf91..0000000000 --- a/packages/strapi-generate-new/files/config/environments/production/database.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "defaultConnection": "default", - "connections": { - "default": { - "connector": "strapi-hook-mongoose", - "settings": { - "client": "mongo", - "uri": "${process.env.DATABASE_URI || ''}", - "host": "${process.env.DATABASE_HOST || '127.0.0.1'}", - "port": "${process.env.DATABASE_PORT || 27017}", - "database": "${process.env.DATABASE_NAME || 'strapi-production'}", - "username": "${process.env.DATABASE_USERNAME || ''}", - "password": "${process.env.DATABASE_PASSWORD || ''}" - }, - "options": { - "ssl": "${process.env.DATABASE_SSL || false}", - "authenticationDatabase": "${process.env.DATABASE_AUTHENTICATION_DATABASE || ''}" - } - } - } -} diff --git a/packages/strapi-generate-new/files/config/environments/production/response.json b/packages/strapi-generate-new/files/config/environments/production/response.json index 90f971d013..c3d45b3e81 100644 --- a/packages/strapi-generate-new/files/config/environments/production/response.json +++ b/packages/strapi-generate-new/files/config/environments/production/response.json @@ -4,5 +4,9 @@ }, "responseTime": { "enabled": false + }, + "poweredBy": { + "enabled": true, + "value": "Strapi " } } diff --git a/packages/strapi-generate-new/files/config/environments/staging/database.json b/packages/strapi-generate-new/files/config/environments/staging/database.json deleted file mode 100644 index 43edf2421d..0000000000 --- a/packages/strapi-generate-new/files/config/environments/staging/database.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "defaultConnection": "default", - "connections": { - "default": { - "connector": "strapi-hook-mongoose", - "settings": { - "client": "mongo", - "uri": "${process.env.DATABASE_URI || ''}", - "host": "${process.env.DATABASE_HOST || '127.0.0.1'}", - "port": "${process.env.DATABASE_PORT || 27017}", - "database": "${process.env.DATABASE_NAME || 'strapi-staging'}", - "username": "${process.env.DATABASE_USERNAME || ''}", - "password": "${process.env.DATABASE_PASSWORD || ''}" - }, - "options": { - "ssl": "${process.env.DATABASE_SSL || false}", - "authenticationDatabase": "${process.env.DATABASE_AUTHENTICATION_DATABASE || ''}" - } - } - } -} diff --git a/packages/strapi-generate-new/files/config/environments/staging/response.json b/packages/strapi-generate-new/files/config/environments/staging/response.json index 90f971d013..c3d45b3e81 100644 --- a/packages/strapi-generate-new/files/config/environments/staging/response.json +++ b/packages/strapi-generate-new/files/config/environments/staging/response.json @@ -4,5 +4,9 @@ }, "responseTime": { "enabled": false + }, + "poweredBy": { + "enabled": true, + "value": "Strapi " } } diff --git a/packages/strapi-generate-new/json/database.json.js b/packages/strapi-generate-new/json/database.json.js index 93434f6dd4..ba1df27e7d 100644 --- a/packages/strapi-generate-new/json/database.json.js +++ b/packages/strapi-generate-new/json/database.json.js @@ -1,8 +1,48 @@ 'use strict'; module.exports = scope => { + // Production/Staging Template + if (['production', 'staging'].includes(scope.keyPath.split('/')[2])) { + // All available settings (bookshelf and mongoose) + const settingsBase = { + client: scope.client.database, + host: '${process.env.DATABASE_HOST || \'127.0.0.1\' }', + port: '${process.env.DATABASE_PORT || 27017 }', + srv: '${process.env.DATABASE_SRV || false }', + database: '${process.env.DATABASE_NAME || strapi }', + username: '${process.env.DATABASE_USERNAME || \'\' }', + password: '${process.env.DATABASE_PASSWORD || \'\' }', + ssl: '${process.env.DATABASE_SSL || false }' + }; + + // Apply only settings set during the configuration + Object.keys(scope.database.settings).forEach((key) => { + scope.database.settings[key] = settingsBase[key]; + }); + + // All available options (bookshelf and mongoose) + const optionsBase = { + ssl: '${process.env.DATABASE_SSL || false }', + authenticationDatabase: '${process.env.DATABASE_AUTHENTICATION_DATABASE || \'\' }' + }; + + // Apply only options set during the configuration + Object.keys(scope.database.options).forEach((key) => { + scope.database.options[key] = optionsBase[key]; + }); + + return { + defaultConnection: 'default', + connections: { + default: { + connector: scope.client.connector, + settings: scope.database.settings, + options: scope.database.options + } + } + }; + } - // Finally, return the JSON. return { defaultConnection: 'default', connections: { diff --git a/packages/strapi-generate-new/lib/after.js b/packages/strapi-generate-new/lib/after.js index 1e7853c2f2..92c081aa21 100644 --- a/packages/strapi-generate-new/lib/after.js +++ b/packages/strapi-generate-new/lib/after.js @@ -15,10 +15,10 @@ const fs = require('fs-extra'); const npm = require('enpeem'); const ora = require('ora'); const shell = require('shelljs'); -const request = require('request'); // Logger. const { packageManager } = require('strapi-utils'); +const trackSuccess = require('./success'); /** * Runs after this generator has finished @@ -201,14 +201,4 @@ module.exports = (scope, cb) => { cb(); }); } -}; - -function trackSuccess(event, scope) { - request - .post('https://analytics.strapi.io/track') - .form({ - event, - uuid: scope.uuid - }) - .on('error', () => {}); -} +}; \ No newline at end of file diff --git a/packages/strapi-generate-new/lib/before.js b/packages/strapi-generate-new/lib/before.js index e71301fa13..b6e90d7829 100644 --- a/packages/strapi-generate-new/lib/before.js +++ b/packages/strapi-generate-new/lib/before.js @@ -21,6 +21,7 @@ const uuid = require('uuid/v4'); // Logger. const { packageManager } = require('strapi-utils'); +const trackSuccess = require('./success'); /** * This `before` function is run before generating targets. @@ -49,6 +50,8 @@ module.exports = (scope, cb) => { scope.tmpPath = path.resolve(os.tmpdir(), `strapi${ crypto.randomBytes(6).toString('hex') }`); scope.uuid = uuid(); + trackSuccess('willCreateProject', scope); + // Ensure we aren't going to inadvertently delete any files. try { const files = fs.readdirSync(scope.rootPath); @@ -205,12 +208,16 @@ module.exports = (scope, cb) => { } scope.database.settings.host = answers.host; - scope.database.settings.srv = _.toString(answers.srv) === 'true'; scope.database.settings.port = answers.port; scope.database.settings.database = answers.database; scope.database.settings.username = answers.username; scope.database.settings.password = answers.password; - scope.database.options.authenticationDatabase = answers.authenticationDatabase; + if (answers.srv) { + scope.database.settings.srv = _.toString(answers.srv) === 'true'; + } + if (answers.authenticationDatabase) { + scope.database.options.authenticationDatabase = answers.authenticationDatabase; + } if (scope.client.database === 'mongo') { scope.database.options.ssl = _.toString(answers.ssl) === 'true'; } else { diff --git a/packages/strapi-generate-new/lib/index.js b/packages/strapi-generate-new/lib/index.js index 7aacf6329b..f96ba44cde 100644 --- a/packages/strapi-generate-new/lib/index.js +++ b/packages/strapi-generate-new/lib/index.js @@ -34,6 +34,14 @@ module.exports = { jsonfile: database }, + 'config/environments/production/database.json': { + jsonfile: database + }, + + 'config/environments/staging/database.json': { + jsonfile: database + }, + // Copy dot files. '.editorconfig': { copy: 'editorconfig' diff --git a/packages/strapi-generate-new/lib/success.js b/packages/strapi-generate-new/lib/success.js new file mode 100644 index 0000000000..e6aa1ef4d7 --- /dev/null +++ b/packages/strapi-generate-new/lib/success.js @@ -0,0 +1,18 @@ +'use strict'; + +/** + * Module dependencies + */ + +// Node.js core. +const request = require('request'); + +module.exports = function trackSuccess(event, scope) { + request + .post('https://analytics.strapi.io/track') + .form({ + event, + uuid: scope.uuid + }) + .on('error', () => {}); +}; diff --git a/packages/strapi-hook-bookshelf/lib/index.js b/packages/strapi-hook-bookshelf/lib/index.js index 8643b4781e..2d5f7c861b 100644 --- a/packages/strapi-hook-bookshelf/lib/index.js +++ b/packages/strapi-hook-bookshelf/lib/index.js @@ -422,8 +422,10 @@ module.exports = function(strapi) { case 'email': type = 'varchar(255)'; break; - case 'integer': case 'biginteger': + type = definition.client === 'pg' ? 'bigint' : 'bigint(53)'; + break; + case 'integer': type = definition.client === 'pg' ? 'integer' : 'int'; break; case 'float': diff --git a/packages/strapi-hook-mongoose/lib/index.js b/packages/strapi-hook-mongoose/lib/index.js index 529743a023..4daf8faa68 100644 --- a/packages/strapi-hook-mongoose/lib/index.js +++ b/packages/strapi-hook-mongoose/lib/index.js @@ -160,6 +160,28 @@ module.exports = function (strapi) { } else { this._mongooseOptions.populate[association.alias].path = `${association.alias}.ref`; } + } else { + if (!this._mongooseOptions.populate) { + this._mongooseOptions.populate = {}; + } + + // Images are not displayed in populated data. + // We automatically populate morph relations. + if (association.nature === 'oneToManyMorph' || association.nature === 'manyToManyMorph') { + this._mongooseOptions.populate[association.alias] = { + path: association.alias, + match: { + [`${association.via}.${association.filter}`]: association.alias, + [`${association.via}.kind`]: definition.globalId + }, + options: { + sort: '-createdAt' + }, + select: undefined, + model: undefined, + _docs: {} + }; + } } next(); }); @@ -554,4 +576,4 @@ module.exports = function (strapi) { }, relations); return hook; -}; \ No newline at end of file +}; diff --git a/packages/strapi-plugin-settings-manager/admin/src/components/WithFormSection/config.json b/packages/strapi-plugin-settings-manager/admin/src/components/WithFormSection/config.json index ac7dd034d6..092e040d24 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/components/WithFormSection/config.json +++ b/packages/strapi-plugin-settings-manager/admin/src/components/WithFormSection/config.json @@ -4,5 +4,5 @@ "databases.connections.${name}.settings.host": "col-md-12", "database.connections.settings.host": "col-md-12", "database.connections.settings.port": "col-md-6", - "showInputLabel": ["form.response.item.gzip.enabled", "form.response.item.responseTime.enabled"] + "showInputLabel": ["form.response.item.gzip.enabled", "form.response.item.responseTime.enabled", "form.response.item.poweredBy.enabled"] } diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/ar.json b/packages/strapi-plugin-settings-manager/admin/src/translations/ar.json index 26fd67ad0c..a11dc0c92f 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/translations/ar.json +++ b/packages/strapi-plugin-settings-manager/admin/src/translations/ar.json @@ -48,6 +48,8 @@ "form.response.description": "قم بتكوين إعدادات الاستجابة الخاصة بك.", "form.response.item.gzip.enabled": "Gzip", "form.response.item.responseTime.enabled": "وقت الاستجابة", + "form.response.item.poweredBy.enabled": "Powered by", + "form.response.item.poweredBy.value": "القيمة", "form.response.name": "الإستجابة", "form.security.description": "تكوين إعدادات الأمان الخاصة بك.", "form.security.item.cors": "Cors", diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/de.json b/packages/strapi-plugin-settings-manager/admin/src/translations/de.json index 07203c3e1f..2a9237dca2 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/translations/de.json +++ b/packages/strapi-plugin-settings-manager/admin/src/translations/de.json @@ -48,6 +48,8 @@ "form.response.description": "Verwalte deine Antworteinstellungen.", "form.response.item.gzip.enabled": "Gzip", "form.response.item.responseTime.enabled": "Antwortzeit", + "form.response.item.poweredBy.enabled": "Powered by", + "form.response.item.poweredBy.value": "Wert", "form.response.name": "Antwort", "form.security.description": "Verwalte deine Sicherheitseinstellungen.", "form.security.item.cors": "Cors", diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/en.json b/packages/strapi-plugin-settings-manager/admin/src/translations/en.json index ff75bd219b..c59ea32c8d 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/translations/en.json +++ b/packages/strapi-plugin-settings-manager/admin/src/translations/en.json @@ -48,6 +48,8 @@ "form.response.description": "Configure your response settings.", "form.response.item.gzip.enabled": "Gzip", "form.response.item.responseTime.enabled": "Response Time", + "form.response.item.poweredBy.enabled": "Powered by", + "form.response.item.poweredBy.value": "Value", "form.response.name": "Response", "form.security.description": "Configure your security settings.", "form.security.item.cors": "Cors", diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/es.json b/packages/strapi-plugin-settings-manager/admin/src/translations/es.json index c6f686b836..317e05d386 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/translations/es.json +++ b/packages/strapi-plugin-settings-manager/admin/src/translations/es.json @@ -48,6 +48,8 @@ "form.response.description": "Configurar las opciones de respuesta.", "form.response.item.gzip.enabled": "Gzip", "form.response.item.responseTime.enabled": "Tiempo de respuesta", + "form.response.item.poweredBy.enabled": "Powered by", + "form.response.item.poweredBy.value": "Valor", "form.response.name": "Respuesta", "form.security.description": "Configurar las opciones de seguridad.", "form.security.item.cors": "Cors", diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/fr.json b/packages/strapi-plugin-settings-manager/admin/src/translations/fr.json index 80c43b8d4f..19101674eb 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/translations/fr.json +++ b/packages/strapi-plugin-settings-manager/admin/src/translations/fr.json @@ -48,6 +48,8 @@ "form.response.description": "Configuration des réponses.", "form.response.item.gzip.enabled": "Gzip", "form.response.item.responseTime.enabled": "Temps de réponse", + "form.response.item.poweredBy.enabled": "Powered by", + "form.response.item.poweredBy.value": "Valeur", "form.response.name": "Réponse", "form.security.description": "Configurations de sécurité.", "form.security.item.cors": "Cors", diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/it.json b/packages/strapi-plugin-settings-manager/admin/src/translations/it.json index 4f83a6e893..d95c60bb28 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/translations/it.json +++ b/packages/strapi-plugin-settings-manager/admin/src/translations/it.json @@ -48,6 +48,8 @@ "form.response.description": "Configurare la tua risposta impostazioni.", "form.response.item.gzip.enabled": "Gzip", "form.response.item.responseTime.enabled": "Il Tempo Di Risposta", + "form.response.item.poweredBy.enabled": "Powered by", + "form.response.item.poweredBy.value": "Valore", "form.response.name": "Risposta", "form.security.description": "Configurare le impostazioni di sicurezza.", "form.security.item.cors": "Cors", diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/ja.json b/packages/strapi-plugin-settings-manager/admin/src/translations/ja.json index 4982111786..f325087887 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/translations/ja.json +++ b/packages/strapi-plugin-settings-manager/admin/src/translations/ja.json @@ -48,6 +48,8 @@ "form.response.description": "レスポンス設定を構成します。", "form.response.item.gzip.enabled": "Gzip", "form.response.item.responseTime.enabled": "Response Time", + "form.response.item.poweredBy.enabled": "Powered by", + "form.response.item.poweredBy.value": "Value", "form.response.name": "レスポンス", "form.security.description": "セキュリティ設定を構成します。", "form.security.item.cors": "Cors", diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/ko.json b/packages/strapi-plugin-settings-manager/admin/src/translations/ko.json index 8a63d2473c..3b77193a83 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/translations/ko.json +++ b/packages/strapi-plugin-settings-manager/admin/src/translations/ko.json @@ -48,6 +48,8 @@ "form.response.description": "응답(response) 환경을 설정하세요.", "form.response.item.gzip.enabled": "Gzip", "form.response.item.responseTime.enabled": "응답 시간 (Response Time)", + "form.response.item.poweredBy.enabled": "Powered by", + "form.response.item.poweredBy.value": "값", "form.response.name": "응답 (Response)", "form.security.description": "보안 환경을 설정하세요.", "form.security.item.cors": "Cors", diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/nl.json b/packages/strapi-plugin-settings-manager/admin/src/translations/nl.json index 4efe15eb62..5872072788 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/translations/nl.json +++ b/packages/strapi-plugin-settings-manager/admin/src/translations/nl.json @@ -48,6 +48,8 @@ "form.response.description": "Configureer je response instellingen.", "form.response.item.gzip.enabled": "Gzip", "form.response.item.responseTime.enabled": "Response Tijd", + "form.response.item.poweredBy.enabled": "Powered by", + "form.response.item.poweredBy.value": "Waarde", "form.response.name": "Response", "form.security.description": "Configureer je beveiliging instellingen.", "form.security.item.cors": "Cors", diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/pl.json b/packages/strapi-plugin-settings-manager/admin/src/translations/pl.json index c2cbfe2fe1..35394ad06f 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/translations/pl.json +++ b/packages/strapi-plugin-settings-manager/admin/src/translations/pl.json @@ -48,6 +48,8 @@ "form.response.description": "Konfiguruj ustawienia odpowiedzi.", "form.response.item.gzip.enabled": "Gzip", "form.response.item.responseTime.enabled": "Czas odpowiedzi", + "form.response.item.poweredBy.enabled": "Powered by", + "form.response.item.poweredBy.value": "Wartość", "form.response.name": "Odpowiedzi", "form.security.description": "Konfiguruj ustawienia bezpieczeństwa.", "form.security.item.cors": "Cors", diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/pt-BR.json b/packages/strapi-plugin-settings-manager/admin/src/translations/pt-BR.json index f6b0dd3a93..a23e16c0c2 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/translations/pt-BR.json +++ b/packages/strapi-plugin-settings-manager/admin/src/translations/pt-BR.json @@ -48,6 +48,8 @@ "form.response.description": "Defina as suas configurações de resposta.", "form.response.item.gzip.enabled": "Gzip", "form.response.item.responseTime.enabled": "Tempo de resposta", + "form.response.item.poweredBy.enabled": "Powered by", + "form.response.item.poweredBy.value": "Valor", "form.response.name": "Resposta", "form.security.description": "Defina as suas configurações de segurança.", "form.security.item.cors": "CORS", diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/pt.json b/packages/strapi-plugin-settings-manager/admin/src/translations/pt.json index 0aedfccf13..4fa3edd182 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/translations/pt.json +++ b/packages/strapi-plugin-settings-manager/admin/src/translations/pt.json @@ -48,6 +48,8 @@ "form.response.description": "Configure as suas definições de resposta.", "form.response.item.gzip.enabled": "Gzip", "form.response.item.responseTime.enabled": "Tempo de resposta", + "form.response.item.poweredBy.enabled": "Powered by", + "form.response.item.poweredBy.value": "Valor", "form.response.name": "Resposta", "form.security.description": "Configure as suas definições de segurança.", "form.security.item.cors": "Cors", diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/ru.json b/packages/strapi-plugin-settings-manager/admin/src/translations/ru.json index 9657f9ec46..fe26ab9afc 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/translations/ru.json +++ b/packages/strapi-plugin-settings-manager/admin/src/translations/ru.json @@ -48,6 +48,8 @@ "form.response.description": "Задайте настройки ответа.", "form.response.item.gzip.enabled": "Gzip", "form.response.item.responseTime.enabled": "Время ответа", + "form.response.item.poweredBy.enabled": "Powered by", + "form.response.item.poweredBy.value": "Value", "form.response.name": "Ответ", "form.security.description": "Задайте настройки безопасности.", "form.security.item.cors": "Cors", diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/tr.json b/packages/strapi-plugin-settings-manager/admin/src/translations/tr.json index 3ebdb03dae..46564bcfe9 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/translations/tr.json +++ b/packages/strapi-plugin-settings-manager/admin/src/translations/tr.json @@ -48,6 +48,8 @@ "form.response.description": "Yanıt ayarlarınızı yapılandırın.", "form.response.item.gzip.enabled": "Gzip", "form.response.item.responseTime.enabled": "Tepki Süresi", + "form.response.item.poweredBy.enabled": "Powered by", + "form.response.item.poweredBy.value": "Değer", "form.response.name": "Cevap", "form.security.description": "Güvenlik ayarlarınızı yapılandırın.", "form.security.item.cors": "Cors", diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/zh-Hans.json b/packages/strapi-plugin-settings-manager/admin/src/translations/zh-Hans.json index 52ba8ef535..5d52299471 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/translations/zh-Hans.json +++ b/packages/strapi-plugin-settings-manager/admin/src/translations/zh-Hans.json @@ -47,6 +47,8 @@ "form.response.description": "配置您的响应设置。", "form.response.item.gzip.enabled": "Gzip", "form.response.item.responseTime.enabled": "Response Time", + "form.response.item.poweredBy.enabled": "Powered by", + "form.response.item.poweredBy.value": "Value", "form.response.name": "Response", "form.security.description": "配置安全设置。", "form.security.item.cors": "Cors", diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/zh.json b/packages/strapi-plugin-settings-manager/admin/src/translations/zh.json index 13de60771b..fe357d7ae2 100644 --- a/packages/strapi-plugin-settings-manager/admin/src/translations/zh.json +++ b/packages/strapi-plugin-settings-manager/admin/src/translations/zh.json @@ -48,6 +48,8 @@ "form.response.description": "調整回應設定", "form.response.item.gzip.enabled": "Gzip", "form.response.item.responseTime.enabled": "回應時間", + "form.response.item.poweredBy.enabled": "Powered by", + "form.response.item.poweredBy.value": "值", "form.response.name": "回應", "form.security.description": "調整安全性設定", "form.security.item.cors": "跨域資源共享 (Cors)", diff --git a/packages/strapi-plugin-settings-manager/services/SettingsManager.js b/packages/strapi-plugin-settings-manager/services/SettingsManager.js index 503c94b175..091708d60e 100644 --- a/packages/strapi-plugin-settings-manager/services/SettingsManager.js +++ b/packages/strapi-plugin-settings-manager/services/SettingsManager.js @@ -198,7 +198,12 @@ module.exports = { validations: { required: true } - }, + } + ] + }, + { + name: '', + items: [ { name: 'form.response.item.responseTime.enabled', target: 'response.responseTime.enabled', @@ -209,6 +214,28 @@ module.exports = { } } ] + }, + { + name: '', + items: [ + { + name: 'form.response.item.poweredBy.enabled', + target: 'response.poweredBy.enabled', + type: 'boolean', + value: _.get(strapi.config, `environments.${env}.response.poweredBy.enabled`, null), + items: [ + { + name: 'form.response.item.poweredBy.value', + target: 'response.poweredBy.value', + type: 'string', + value: _.get(strapi.config, `environments.${env}.response.poweredBy.value`, null), + validations : { + required: true + } + } + ] + } + ] } ] }), diff --git a/packages/strapi-provider-upload-aws-s3/lib/index.js b/packages/strapi-provider-upload-aws-s3/lib/index.js index 51d1e8aead..d03c0b27e1 100644 --- a/packages/strapi-provider-upload-aws-s3/lib/index.js +++ b/packages/strapi-provider-upload-aws-s3/lib/index.js @@ -40,6 +40,7 @@ module.exports = { 'cn-north-1', 'cn-northwest-1', 'eu-central-1', + 'eu-north-1', 'eu-west-1', 'eu-west-2', 'eu-west-3', diff --git a/packages/strapi/bin/strapi-new.js b/packages/strapi/bin/strapi-new.js index 707a7bbe35..87a11ce1b4 100644 --- a/packages/strapi/bin/strapi-new.js +++ b/packages/strapi/bin/strapi-new.js @@ -61,6 +61,7 @@ module.exports = function (name, cliArguments) { settings: { client: cliArguments.dbclient, host: cliArguments.dbhost, + srv: cliArguments.dbsrv, port: cliArguments.dbport, database: cliArguments.dbname, username: cliArguments.dbusername, diff --git a/packages/strapi/bin/strapi.js b/packages/strapi/bin/strapi.js index 4aa5d87cdd..03dad62503 100755 --- a/packages/strapi/bin/strapi.js +++ b/packages/strapi/bin/strapi.js @@ -56,6 +56,7 @@ program .option('--debug', 'Display database connection error') .option('--dbclient ', 'Database client') .option('--dbhost ', 'Database host') + .option('--dbsrv ', 'Database srv') .option('--dbport ', 'Database port') .option('--dbname ', 'Database name') .option('--dbusername ', 'Database username') diff --git a/packages/strapi/lib/middlewares/responses/index.js b/packages/strapi/lib/middlewares/responses/index.js index 4891a91060..2247204285 100644 --- a/packages/strapi/lib/middlewares/responses/index.js +++ b/packages/strapi/lib/middlewares/responses/index.js @@ -22,8 +22,8 @@ module.exports = () => { } // Set X-Powered-By header. - if (_.get(strapi.config, 'X-Powered-By.enabled', true)) { - ctx.set('X-Powered-By', 'Strapi '); + if (_.get(strapi.config.currentEnvironment.response, 'poweredBy.enabled')) { + ctx.set('X-Powered-By', _.get(strapi.config.currentEnvironment.response, 'poweredBy.value', 'Strapi ')); } }); cb(); diff --git a/packages/strapi/lib/utils/success.js b/packages/strapi/lib/utils/success.js new file mode 100644 index 0000000000..631826d870 --- /dev/null +++ b/packages/strapi/lib/utils/success.js @@ -0,0 +1,21 @@ +#!/usr/bin/env node + +'use strict'; + +/** + * Module dependencies + */ + +// Node.js core. +const fetch = require('node-fetch'); + +if (process.env.npm_config_global === 'true') { + fetch('https://analytics.strapi.io/track', { + method: 'POST', + body: JSON.stringify({ event: 'didInstallStrapi' }), + headers: { 'Content-Type': 'application/json' } + }) + .catch(() => {}); +} + + diff --git a/packages/strapi/package.json b/packages/strapi/package.json index e3c641a254..adc19c0e49 100644 --- a/packages/strapi/package.json +++ b/packages/strapi/package.json @@ -71,6 +71,9 @@ "strapi-generate-service": "3.0.0-alpha.21", "strapi-utils": "3.0.0-alpha.21" }, + "scripts": { + "postinstall": "node lib/utils/success.js" + }, "author": { "email": "hi@strapi.io", "name": "Strapi team",