diff --git a/docs/3.x.x/en/SUMMARY.md b/docs/3.x.x/en/SUMMARY.md index 9fd3979f28..66da253e4b 100644 --- a/docs/3.x.x/en/SUMMARY.md +++ b/docs/3.x.x/en/SUMMARY.md @@ -20,6 +20,7 @@ * [Configurations](configurations/configurations.md) * [Controllers](guides/controllers.md) * [Deployment](guides/deployment.md) +* [Email](guides/email.md) * [File Upload](guides/upload.md) * [Filters](guides/filters.md) * [GraphQL](guides/graphql.md) @@ -55,9 +56,4 @@ * [Table of contents](tutorials/README.md) ### Migration -* [Migrating from v1 to v3](migration/migration-guide.md) -* [Migrating from 3.0.0-alpha.7.4 to 3.0.0-alpha.8](migration/migration-guide-alpha-7-4-to-alpha-8.md) -* [Migrating from 3.0.0-alpha.8 to 3.0.0-alpha.9](migration/migration-guide-alpha-8-to-alpha-9.md) -* [Migrating from 3.0.0-alpha.9 to 3.0.0-alpha.10](migration/migration-guide-alpha-9-to-alpha-10.md) -* [Migrating from 3.0.0-alpha.10 to 3.0.0-alpha.11](migration/migration-guide-alpha-10-to-alpha-11.md) -* [Migrating from 3.0.0-alpha.11 to 3.0.0-alpha.12](migration/migration-guide-alpha-11-to-alpha-12.md) +* [Migration guides](https://github.com/strapi/strapi/wiki) diff --git a/docs/3.x.x/en/guides/email.md b/docs/3.x.x/en/guides/email.md new file mode 100644 index 0000000000..b9edddd7f8 --- /dev/null +++ b/docs/3.x.x/en/guides/email.md @@ -0,0 +1,34 @@ +# Email + +> ⚠️ This feature requires the Email plugin (installed by default). + +Thanks to the plugin `Email`, you can send email on your server or externals providers such as Sendgrid. + +## Usage + +```js +await strapi.plugins['email'].services.email.send({ + to: 'admin@strapi.io', + from: 'robbot@strapi.io', + replyTo: 'no-reply@strapi.io', + subject: 'Use strapi email provider successfully', + text: 'Hello world!', + html: 'Hello world!' +}); +``` + +## Install providers + +By default Strapi provides a local email system. You might want to send email with Sendgrid or another provider. + +To install a new provider run: + +``` +$ npm install strapi-email-sendgrid@alpha --save +``` + +We have two providers available `strapi-email-sendgrid` and `strapi-upload-mailgun`, use the alpha tag to install one of them. Then, visit `/admin/plugins/email/configurations/development` and configure the provider. + +If you want to create your own, make sure the name starts with `strapi-email-` (duplicating an existing one will be easier to create), modify the `auth` config object and customize the `send` functions. + +Check all community providers available on npmjs.org - [Providers list](https://www.npmjs.com/search?q=strapi-email-) \ No newline at end of file diff --git a/docs/3.x.x/en/guides/upload.md b/docs/3.x.x/en/guides/upload.md index d018798156..eae41c75f4 100644 --- a/docs/3.x.x/en/guides/upload.md +++ b/docs/3.x.x/en/guides/upload.md @@ -136,3 +136,5 @@ $ npm install strapi-upload-aws-s3@alpha --save We have two providers available `strapi-upload-aws-s3` and `strapi-upload-cloudinary`, use the alpha tag to install one of them. Then, visit `/admin/plugins/upload/configurations/development` and configure the provider. If you want to create your own, make sure the name starts with `strapi-upload-` (duplicating an existing one will be easier to create), modify the `auth` config object and customize the `upload` and `delete` functions. + +Check all community providers available on npmjs.org - [Providers list](https://www.npmjs.com/search?q=strapi-upload-) diff --git a/package.json b/package.json index 2a71d5cd5b..4e3df4082c 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "dependencies": {}, "devDependencies": { "assert": "~1.3.0", diff --git a/packages/strapi-admin/package.json b/packages/strapi-admin/package.json index 347d2890b6..402f1cb8bb 100755 --- a/packages/strapi-admin/package.json +++ b/packages/strapi-admin/package.json @@ -1,6 +1,6 @@ { "name": "strapi-admin", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Strapi Admin", "repository": { "type": "git", @@ -31,8 +31,8 @@ }, "devDependencies": { "sanitize.css": "^4.1.0", - "strapi-helper-plugin": "3.0.0-alpha.12.4", - "strapi-utils": "3.0.0-alpha.12.4" + "strapi-helper-plugin": "3.0.0-alpha.12.5", + "strapi-utils": "3.0.0-alpha.12.5" }, "author": { "name": "Strapi", diff --git a/packages/strapi-bookshelf/package.json b/packages/strapi-bookshelf/package.json index e72e399190..ee79562b86 100755 --- a/packages/strapi-bookshelf/package.json +++ b/packages/strapi-bookshelf/package.json @@ -1,6 +1,6 @@ { "name": "strapi-bookshelf", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Bookshelf hook for the Strapi framework", "homepage": "http://strapi.io", "keywords": [ @@ -20,8 +20,8 @@ "inquirer": "^5.2.0", "lodash": "^4.17.4", "pluralize": "^6.0.0", - "strapi-knex": "3.0.0-alpha.12.4", - "strapi-utils": "3.0.0-alpha.12.4" + "strapi-knex": "3.0.0-alpha.12.5", + "strapi-utils": "3.0.0-alpha.12.5" }, "strapi": { "isHook": true, diff --git a/packages/strapi-ejs/package.json b/packages/strapi-ejs/package.json index cf2f145085..77d4559143 100755 --- a/packages/strapi-ejs/package.json +++ b/packages/strapi-ejs/package.json @@ -1,6 +1,6 @@ { "name": "strapi-ejs", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "EJS hook for the Strapi framework", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-email-mailgun/package.json b/packages/strapi-email-mailgun/package.json index fc74b30b97..c7aea6e301 100644 --- a/packages/strapi-email-mailgun/package.json +++ b/packages/strapi-email-mailgun/package.json @@ -1,6 +1,6 @@ { "name": "strapi-email-mailgun", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Mailgun provider for strapi email plugin", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-email-sendgrid/package.json b/packages/strapi-email-sendgrid/package.json index daf57caacc..acd5ba90ec 100644 --- a/packages/strapi-email-sendgrid/package.json +++ b/packages/strapi-email-sendgrid/package.json @@ -1,6 +1,6 @@ { "name": "strapi-email-sendgrid", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Sendgrid provider for strapi email", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-email-sendmail/package.json b/packages/strapi-email-sendmail/package.json index f1a3aa1a6d..0f9f8e795b 100644 --- a/packages/strapi-email-sendmail/package.json +++ b/packages/strapi-email-sendmail/package.json @@ -1,6 +1,6 @@ { "name": "strapi-email-sendmail", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Sendmail provider for strapi email", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-generate-admin/package.json b/packages/strapi-generate-admin/package.json index 14a0c5d48f..491850aab8 100755 --- a/packages/strapi-generate-admin/package.json +++ b/packages/strapi-generate-admin/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate-admin", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Generate the default admin panel for a Strapi application.", "homepage": "http://strapi.io", "keywords": [ @@ -15,7 +15,7 @@ "dependencies": { "fs-extra": "^4.0.1", "lodash": "^4.17.4", - "strapi-admin": "3.0.0-alpha.12.4" + "strapi-admin": "3.0.0-alpha.12.5" }, "author": { "email": "hi@strapi.io", diff --git a/packages/strapi-generate-api/package.json b/packages/strapi-generate-api/package.json index 172c044997..1404381029 100755 --- a/packages/strapi-generate-api/package.json +++ b/packages/strapi-generate-api/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate-api", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Generate an API for a Strapi application.", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-generate-controller/package.json b/packages/strapi-generate-controller/package.json index 7d5b569cfc..9dee4e4a63 100755 --- a/packages/strapi-generate-controller/package.json +++ b/packages/strapi-generate-controller/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate-controller", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Generate a controller for a Strapi API.", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-generate-model/package.json b/packages/strapi-generate-model/package.json index 3d24516cd3..4d8d76498d 100755 --- a/packages/strapi-generate-model/package.json +++ b/packages/strapi-generate-model/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate-model", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Generate a model for a Strapi API.", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-generate-new/package.json b/packages/strapi-generate-new/package.json index dee6138edc..6e1731cfe9 100755 --- a/packages/strapi-generate-new/package.json +++ b/packages/strapi-generate-new/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate-new", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Generate a new Strapi application.", "homepage": "http://strapi.io", "keywords": [ @@ -17,7 +17,7 @@ "fs-extra": "^4.0.0", "inquirer": "^4.0.2", "lodash": "^4.17.4", - "strapi-utils": "3.0.0-alpha.12.4", + "strapi-utils": "3.0.0-alpha.12.5", "uuid": "^3.1.0" }, "scripts": { diff --git a/packages/strapi-generate-plugin/package.json b/packages/strapi-generate-plugin/package.json index dd4eeb0cf4..914e935994 100755 --- a/packages/strapi-generate-plugin/package.json +++ b/packages/strapi-generate-plugin/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate-plugin", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Generate an plugin for a Strapi application.", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-generate-policy/package.json b/packages/strapi-generate-policy/package.json index 055647a0bf..fd8619d9f6 100755 --- a/packages/strapi-generate-policy/package.json +++ b/packages/strapi-generate-policy/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate-policy", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Generate a policy for a Strapi API.", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-generate-service/package.json b/packages/strapi-generate-service/package.json index 427392b19f..1dd6329ced 100755 --- a/packages/strapi-generate-service/package.json +++ b/packages/strapi-generate-service/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate-service", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Generate a service for a Strapi API.", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-generate/package.json b/packages/strapi-generate/package.json index 8dbe9cc695..e01317cc49 100755 --- a/packages/strapi-generate/package.json +++ b/packages/strapi-generate/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Master of ceremonies for the Strapi generators.", "homepage": "http://strapi.io", "keywords": [ @@ -17,7 +17,7 @@ "fs-extra": "^4.0.0", "lodash": "^4.17.4", "reportback": "^2.0.1", - "strapi-utils": "3.0.0-alpha.12.4" + "strapi-utils": "3.0.0-alpha.12.5" }, "author": { "name": "Strapi team", diff --git a/packages/strapi-helper-plugin/package.json b/packages/strapi-helper-plugin/package.json index e6016f8293..ec0519f900 100755 --- a/packages/strapi-helper-plugin/package.json +++ b/packages/strapi-helper-plugin/package.json @@ -1,6 +1,6 @@ { "name": "strapi-helper-plugin", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Helper for Strapi plugins development", "engines": { "node": ">= 9.0.0", diff --git a/packages/strapi-knex/package.json b/packages/strapi-knex/package.json index 0661bf7f33..6e06e5522d 100755 --- a/packages/strapi-knex/package.json +++ b/packages/strapi-knex/package.json @@ -1,6 +1,6 @@ { "name": "strapi-knex", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Knex hook for the Strapi framework", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-lint/package.json b/packages/strapi-lint/package.json index 8cdb40d9c3..2cdc5c346c 100644 --- a/packages/strapi-lint/package.json +++ b/packages/strapi-lint/package.json @@ -1,6 +1,6 @@ { "name": "strapi-lint", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Strapi eslint and prettier configurations", "directories": { "lib": "lib" diff --git a/packages/strapi-middleware-views/package.json b/packages/strapi-middleware-views/package.json index 4ec24133d6..c4368e0bb4 100755 --- a/packages/strapi-middleware-views/package.json +++ b/packages/strapi-middleware-views/package.json @@ -1,6 +1,6 @@ { "name": "strapi-middleware-views", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Views hook to enable server-side rendering for the Strapi framework", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-mongoose/lib/utils/index.js b/packages/strapi-mongoose/lib/utils/index.js index 4661cdaa68..f36bf888ad 100755 --- a/packages/strapi-mongoose/lib/utils/index.js +++ b/packages/strapi-mongoose/lib/utils/index.js @@ -11,7 +11,7 @@ module.exports = mongoose => { convertType: mongooseType => { switch (mongooseType.toLowerCase()) { case 'array': - return 'Array'; + return Array; case 'boolean': return 'Boolean'; case 'binary': diff --git a/packages/strapi-mongoose/package.json b/packages/strapi-mongoose/package.json index 7facc7c391..2f3dc93b39 100755 --- a/packages/strapi-mongoose/package.json +++ b/packages/strapi-mongoose/package.json @@ -1,6 +1,6 @@ { "name": "strapi-mongoose", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Mongoose hook for the Strapi framework", "homepage": "http://strapi.io", "keywords": [ @@ -19,7 +19,7 @@ "mongoose": "^5.0.16", "mongoose-float": "^1.0.2", "pluralize": "^6.0.0", - "strapi-utils": "3.0.0-alpha.12.4" + "strapi-utils": "3.0.0-alpha.12.5" }, "strapi": { "isHook": true diff --git a/packages/strapi-plugin-content-manager/package.json b/packages/strapi-plugin-content-manager/package.json index b27fed9185..f41b7111a5 100755 --- a/packages/strapi-plugin-content-manager/package.json +++ b/packages/strapi-plugin-content-manager/package.json @@ -1,6 +1,6 @@ { "name": "strapi-plugin-content-manager", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "A powerful UI to easily manage your data.", "strapi": { "name": "Content Manager", @@ -23,7 +23,7 @@ }, "devDependencies": { "react-select": "^1.0.0-rc.5", - "strapi-helper-plugin": "3.0.0-alpha.12.4" + "strapi-helper-plugin": "3.0.0-alpha.12.5" }, "author": { "name": "Strapi team", diff --git a/packages/strapi-plugin-content-type-builder/package.json b/packages/strapi-plugin-content-type-builder/package.json index 998adaf134..0f2dcfbae3 100755 --- a/packages/strapi-plugin-content-type-builder/package.json +++ b/packages/strapi-plugin-content-type-builder/package.json @@ -1,6 +1,6 @@ { "name": "strapi-plugin-content-type-builder", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Strapi plugin to create content type (API).", "strapi": { "name": "Content Type Builder", @@ -23,11 +23,11 @@ }, "dependencies": { "pluralize": "^7.0.0", - "strapi-generate": "3.0.0-alpha.12.4", - "strapi-generate-api": "3.0.0-alpha.12.4" + "strapi-generate": "3.0.0-alpha.12.5", + "strapi-generate-api": "3.0.0-alpha.12.5" }, "devDependencies": { - "strapi-helper-plugin": "3.0.0-alpha.12.4" + "strapi-helper-plugin": "3.0.0-alpha.12.5" }, "author": { "name": "Strapi team", diff --git a/packages/strapi-plugin-email/package.json b/packages/strapi-plugin-email/package.json index 18c5a9d429..4e34c03031 100644 --- a/packages/strapi-plugin-email/package.json +++ b/packages/strapi-plugin-email/package.json @@ -1,6 +1,6 @@ { "name": "strapi-plugin-email", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "This is the description of the plugin.", "strapi": { "name": "Email", @@ -22,11 +22,11 @@ "prepublishOnly": "IS_MONOREPO=true npm run build" }, "dependencies": { - "strapi-email-sendmail": "3.0.0-alpha.12.4" + "strapi-email-sendmail": "3.0.0-alpha.12.5" }, "devDependencies": { "react-copy-to-clipboard": "5.0.1", - "strapi-helper-plugin": "3.0.0-alpha.12.4" + "strapi-helper-plugin": "3.0.0-alpha.12.5" }, "author": { "name": "Strapi team", diff --git a/packages/strapi-plugin-graphql/config/settings.json b/packages/strapi-plugin-graphql/config/settings.json index 1501513aee..deda1e7b90 100644 --- a/packages/strapi-plugin-graphql/config/settings.json +++ b/packages/strapi-plugin-graphql/config/settings.json @@ -1,5 +1,6 @@ { "endpoint": "/graphql", "shadowCRUD": true, + "playgroundAlways": false, "depthLimit": 7 } diff --git a/packages/strapi-plugin-graphql/hooks/graphql/index.js b/packages/strapi-plugin-graphql/hooks/graphql/index.js index a8e0586432..dc0dd42b4f 100644 --- a/packages/strapi-plugin-graphql/hooks/graphql/index.js +++ b/packages/strapi-plugin-graphql/hooks/graphql/index.js @@ -123,7 +123,7 @@ module.exports = strapi => { })(ctx, next)); // Disable GraphQL Playground in production environment. - if (strapi.config.environment !== 'production') { + if (strapi.config.environment !== 'production' || strapi.plugins.graphql.config.playgroundAlways) { router.get('/playground', koaPlayground({ endpoint: strapi.plugins.graphql.config.endpoint})); } diff --git a/packages/strapi-plugin-graphql/package.json b/packages/strapi-plugin-graphql/package.json index b048fa98e2..b24c307c14 100644 --- a/packages/strapi-plugin-graphql/package.json +++ b/packages/strapi-plugin-graphql/package.json @@ -1,6 +1,6 @@ { "name": "strapi-plugin-graphql", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "This is the description of the plugin.", "strapi": { "name": "graphql", @@ -29,7 +29,7 @@ "graphql-tools": "^2.23.1", "graphql-type-json": "^0.2.0", "pluralize": "^7.0.0", - "strapi-utils": "3.0.0-alpha.12.4" + "strapi-utils": "3.0.0-alpha.12.5" }, "author": { "name": "A Strapi developer", diff --git a/packages/strapi-plugin-graphql/services/GraphQL.js b/packages/strapi-plugin-graphql/services/GraphQL.js index 0e43ea9674..f35fdab0d2 100644 --- a/packages/strapi-plugin-graphql/services/GraphQL.js +++ b/packages/strapi-plugin-graphql/services/GraphQL.js @@ -157,10 +157,7 @@ module.exports = { let type = 'String'; switch (definition.type) { - case 'string': - case 'text': - type = 'String'; - break; + // TODO: Handle fields of type Array, Perhaps default to [Int] or [String] ... case 'boolean': type = 'Boolean'; break; @@ -567,7 +564,10 @@ module.exports = { const entry = withRelated && withRelated.toJSON ? withRelated.toJSON() : withRelated; - entry[association.alias]._type = _.upperFirst(association.model); + // Set the _type only when the value is defined + if (entry[association.alias]) { + entry[association.alias]._type = _.upperFirst(association.model); + } return entry[association.alias]; } @@ -651,8 +651,8 @@ module.exports = { [ref.primaryKey]: arrayOfIds, ...where.where }).where; + break; } - break; // falls through } default: diff --git a/packages/strapi-plugin-settings-manager/package.json b/packages/strapi-plugin-settings-manager/package.json index 5f91f4610d..5df42d3e96 100755 --- a/packages/strapi-plugin-settings-manager/package.json +++ b/packages/strapi-plugin-settings-manager/package.json @@ -1,6 +1,6 @@ { "name": "strapi-plugin-settings-manager", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Strapi plugin to manage settings.", "strapi": { "name": "Settings Manager", @@ -25,7 +25,7 @@ "devDependencies": { "flag-icon-css": "^2.8.0", "react-select": "^1.0.0-rc.5", - "strapi-helper-plugin": "3.0.0-alpha.12.4" + "strapi-helper-plugin": "3.0.0-alpha.12.5" }, "author": { "name": "Strapi team", diff --git a/packages/strapi-plugin-upload/package.json b/packages/strapi-plugin-upload/package.json index f66ba60e85..43d76b1af7 100644 --- a/packages/strapi-plugin-upload/package.json +++ b/packages/strapi-plugin-upload/package.json @@ -1,6 +1,6 @@ { "name": "strapi-plugin-upload", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "This is the description of the plugin.", "strapi": { "name": "Files Upload", @@ -23,12 +23,12 @@ }, "dependencies": { "react-copy-to-clipboard": "^5.0.1", - "strapi-upload-local": "3.0.0-alpha.12.4", + "strapi-upload-local": "3.0.0-alpha.12.5", "stream-to-array": "^2.3.0", "uuid": "^3.2.1" }, "devDependencies": { - "strapi-helper-plugin": "3.0.0-alpha.12.4" + "strapi-helper-plugin": "3.0.0-alpha.12.5" }, "author": { "name": "A Strapi developer", diff --git a/packages/strapi-plugin-users-permissions/controllers/Auth.js b/packages/strapi-plugin-users-permissions/controllers/Auth.js index a70990e23a..a97a9df50d 100644 --- a/packages/strapi-plugin-users-permissions/controllers/Auth.js +++ b/packages/strapi-plugin-users-permissions/controllers/Auth.js @@ -114,8 +114,11 @@ module.exports = { user.password = await strapi.plugins['users-permissions'].services.user.hashPassword(params); + // Remove relations data to update user password. + const data = _.omit(user, strapi.plugins['users-permissions'].models.user.associations.map(ast => ast.alias)); + // Update the user. - await strapi.query('user', 'users-permissions').update(user); + await strapi.query('user', 'users-permissions').update(data); ctx.send({ jwt: strapi.plugins['users-permissions'].services.jwt.issue(_.pick(user.toJSON ? user.toJSON() : user, ['_id', 'id'])), @@ -203,8 +206,11 @@ module.exports = { return ctx.badRequest(null, err); } + // Remove relations data to update user code. + const data = _.omit(user, strapi.plugins['users-permissions'].models.user.associations.map(ast => ast.alias)); + // Update the user. - await strapi.query('user', 'users-permissions').update(user); + await strapi.query('user', 'users-permissions').update(data); ctx.send({ ok: true }); }, diff --git a/packages/strapi-plugin-users-permissions/package.json b/packages/strapi-plugin-users-permissions/package.json index 11166ecf5e..f5a690625c 100644 --- a/packages/strapi-plugin-users-permissions/package.json +++ b/packages/strapi-plugin-users-permissions/package.json @@ -1,6 +1,6 @@ { "name": "strapi-plugin-users-permissions", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Protect your API with a full-authentication process based on JWT", "strapi": { "name": "Roles & Permissions", @@ -31,7 +31,7 @@ "uuid": "^3.1.0" }, "devDependencies": { - "strapi-helper-plugin": "3.0.0-alpha.12.4" + "strapi-helper-plugin": "3.0.0-alpha.12.5" }, "author": { "name": "Strapi team", diff --git a/packages/strapi-redis/package.json b/packages/strapi-redis/package.json index be24241412..95ab33c6df 100755 --- a/packages/strapi-redis/package.json +++ b/packages/strapi-redis/package.json @@ -1,6 +1,6 @@ { "name": "strapi-redis", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Redis hook for the Strapi framework", "homepage": "http://strapi.io", "keywords": [ @@ -18,7 +18,7 @@ "ioredis": "^3.1.2", "lodash": "^4.17.4", "stack-trace": "0.0.10", - "strapi-utils": "3.0.0-alpha.12.4" + "strapi-utils": "3.0.0-alpha.12.5" }, "strapi": { "isHook": true diff --git a/packages/strapi-upload-aws-s3/package.json b/packages/strapi-upload-aws-s3/package.json index eed53ad553..8b3da1fe90 100644 --- a/packages/strapi-upload-aws-s3/package.json +++ b/packages/strapi-upload-aws-s3/package.json @@ -1,6 +1,6 @@ { "name": "strapi-upload-aws-s3", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "AWS S3 provider for strapi upload", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-upload-cloudinary/package.json b/packages/strapi-upload-cloudinary/package.json index e192860c04..e0cbdf9e9a 100644 --- a/packages/strapi-upload-cloudinary/package.json +++ b/packages/strapi-upload-cloudinary/package.json @@ -1,6 +1,6 @@ { "name": "strapi-upload-cloudinary", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Cloudinary provider for strapi upload", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-upload-local/package.json b/packages/strapi-upload-local/package.json index 4d38592694..cb1ec30d80 100644 --- a/packages/strapi-upload-local/package.json +++ b/packages/strapi-upload-local/package.json @@ -1,6 +1,6 @@ { "name": "strapi-upload-local", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Local provider for strapi upload", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-upload-rackspace/package.json b/packages/strapi-upload-rackspace/package.json index 682a70dacc..f4137b7a6c 100644 --- a/packages/strapi-upload-rackspace/package.json +++ b/packages/strapi-upload-rackspace/package.json @@ -1,6 +1,6 @@ { "name": "strapi-upload-rackspace", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Rackspace provider for strapi upload", "main": "./lib", "scripts": { diff --git a/packages/strapi-utils/lib/models.js b/packages/strapi-utils/lib/models.js index ab3f12aff2..4cc6981971 100755 --- a/packages/strapi-utils/lib/models.js +++ b/packages/strapi-utils/lib/models.js @@ -10,6 +10,11 @@ const path = require('path'); // Public node modules. const _ = require('lodash'); +// Following this discussion https://stackoverflow.com/questions/18082/validate-decimal-numbers-in-javascript-isnumeric this function is the best implem to determine if a value is a valid number candidate +const isNumeric = (value) => { + return !isNaN(parseFloat(value)) && isFinite(value); +} + /* eslint-disable prefer-template */ /* * Set of utils for models @@ -453,11 +458,10 @@ module.exports = { let result; let formattedValue; - try { - formattedValue = !_.isNaN(_.toNumber(value)) ? _.toNumber(value) : value; - } catch(err) { - formattedValue = value; - } + // Check if the value if a valid candidate to be converted to a number value + formattedValue = isNumeric(value) + ? _.toNumber(value) + : value; if (_.includes(['_start', '_limit'], key)) { result = convertor(formattedValue, key); diff --git a/packages/strapi-utils/package.json b/packages/strapi-utils/package.json index 0e1fb0bff9..497f69a373 100755 --- a/packages/strapi-utils/package.json +++ b/packages/strapi-utils/package.json @@ -1,6 +1,6 @@ { "name": "strapi-utils", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "Shared utilities for the Strapi packages", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi/package.json b/packages/strapi/package.json index 2d13039440..1441d425f2 100755 --- a/packages/strapi/package.json +++ b/packages/strapi/package.json @@ -1,6 +1,6 @@ { "name": "strapi", - "version": "3.0.0-alpha.12.4", + "version": "3.0.0-alpha.12.5", "description": "An open source solution to create and manage your own API. It provides a powerful dashboard and features to make your life easier.", "homepage": "http://strapi.io", "keywords": [ @@ -55,16 +55,16 @@ "rimraf": "^2.6.2", "semver": "^5.4.1", "stack-trace": "0.0.10", - "strapi-generate": "3.0.0-alpha.12.4", - "strapi-generate-admin": "3.0.0-alpha.12.4", - "strapi-generate-api": "3.0.0-alpha.12.4", - "strapi-generate-controller": "3.0.0-alpha.12.4", - "strapi-generate-model": "3.0.0-alpha.12.4", - "strapi-generate-new": "3.0.0-alpha.12.4", - "strapi-generate-plugin": "3.0.0-alpha.12.4", - "strapi-generate-policy": "3.0.0-alpha.12.4", - "strapi-generate-service": "3.0.0-alpha.12.4", - "strapi-utils": "3.0.0-alpha.12.4" + "strapi-generate": "3.0.0-alpha.12.5", + "strapi-generate-admin": "3.0.0-alpha.12.5", + "strapi-generate-api": "3.0.0-alpha.12.5", + "strapi-generate-controller": "3.0.0-alpha.12.5", + "strapi-generate-model": "3.0.0-alpha.12.5", + "strapi-generate-new": "3.0.0-alpha.12.5", + "strapi-generate-plugin": "3.0.0-alpha.12.5", + "strapi-generate-policy": "3.0.0-alpha.12.5", + "strapi-generate-service": "3.0.0-alpha.12.5", + "strapi-utils": "3.0.0-alpha.12.5" }, "author": { "email": "hi@strapi.io",