diff --git a/docs/3.0.0-beta.x/concepts/models.md b/docs/3.0.0-beta.x/concepts/models.md index 7c9a040d48..7625f9b6e5 100644 --- a/docs/3.0.0-beta.x/concepts/models.md +++ b/docs/3.0.0-beta.x/concepts/models.md @@ -349,7 +349,7 @@ xhr.send( ::: tab "Many-to-Many" id="many-to-many" -One-to-Many relationships are usefull when an entry can be liked to multiple entries of an other Content Type. And an entry of the other Content Type can be linked to many entries. +Many-to-Many relationships are usefull when an entry can be liked to multiple entries of an other Content Type. And an entry of the other Content Type can be linked to many entries. #### Example diff --git a/docs/3.0.0-beta.x/guides/databases.md b/docs/3.0.0-beta.x/guides/databases.md index b1203d0c12..fcf0f8bcd6 100644 --- a/docs/3.0.0-beta.x/guides/databases.md +++ b/docs/3.0.0-beta.x/guides/databases.md @@ -172,7 +172,7 @@ MongoDB must already be running in the background. ::: tab yarn ``` -yarn create strapi-app new my-project +yarn create strapi-app my-project ``` ::: diff --git a/examples/getstarted/package.json b/examples/getstarted/package.json index 0340e72f5c..be61642560 100644 --- a/examples/getstarted/package.json +++ b/examples/getstarted/package.json @@ -1,7 +1,7 @@ { "name": "getstarted", "private": true, - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "A Strapi application.", "scripts": { "develop": "strapi develop", @@ -15,21 +15,21 @@ "mysql": "^2.17.1", "pg": "^7.10.0", "sqlite3": "^4.0.6", - "strapi": "3.0.0-beta.18.2", - "strapi-admin": "3.0.0-beta.18.2", - "strapi-connector-bookshelf": "3.0.0-beta.18.2", - "strapi-connector-mongoose": "3.0.0-beta.18.2", - "strapi-middleware-views": "3.0.0-beta.18.2", - "strapi-plugin-content-manager": "3.0.0-beta.18.2", - "strapi-plugin-content-type-builder": "3.0.0-beta.18.2", - "strapi-plugin-documentation": "3.0.0-beta.18.2", - "strapi-plugin-email": "3.0.0-beta.18.2", - "strapi-plugin-graphql": "3.0.0-beta.18.2", - "strapi-plugin-upload": "3.0.0-beta.18.2", - "strapi-plugin-users-permissions": "3.0.0-beta.18.2", - "strapi-provider-email-mailgun": "3.0.0-beta.18.2", - "strapi-provider-upload-aws-s3": "3.0.0-beta.18.2", - "strapi-utils": "3.0.0-beta.18.2" + "strapi": "3.0.0-beta.18.3", + "strapi-admin": "3.0.0-beta.18.3", + "strapi-connector-bookshelf": "3.0.0-beta.18.3", + "strapi-connector-mongoose": "3.0.0-beta.18.3", + "strapi-middleware-views": "3.0.0-beta.18.3", + "strapi-plugin-content-manager": "3.0.0-beta.18.3", + "strapi-plugin-content-type-builder": "3.0.0-beta.18.3", + "strapi-plugin-documentation": "3.0.0-beta.18.3", + "strapi-plugin-email": "3.0.0-beta.18.3", + "strapi-plugin-graphql": "3.0.0-beta.18.3", + "strapi-plugin-upload": "3.0.0-beta.18.3", + "strapi-plugin-users-permissions": "3.0.0-beta.18.3", + "strapi-provider-email-mailgun": "3.0.0-beta.18.3", + "strapi-provider-upload-aws-s3": "3.0.0-beta.18.3", + "strapi-utils": "3.0.0-beta.18.3" }, "strapi": { "uuid": "getstarted" diff --git a/lerna.json b/lerna.json index 79c3402bd2..2517d5f071 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "packages": [ "packages/*", "examples/*" diff --git a/packages/create-strapi-app/package.json b/packages/create-strapi-app/package.json index 32588303a6..f29bfa7bd9 100644 --- a/packages/create-strapi-app/package.json +++ b/packages/create-strapi-app/package.json @@ -1,6 +1,6 @@ { "name": "create-strapi-app", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Generate a new Strapi application.", "license": "MIT", "homepage": "http://strapi.io", @@ -21,7 +21,7 @@ ], "dependencies": { "commander": "^2.20.0", - "strapi-generate-new": "3.0.0-beta.18.2" + "strapi-generate-new": "3.0.0-beta.18.3" }, "scripts": { "test": "echo \"no tests yet\"" diff --git a/packages/strapi-admin/package.json b/packages/strapi-admin/package.json index 1b8b3b05a6..effe48d9bf 100644 --- a/packages/strapi-admin/package.json +++ b/packages/strapi-admin/package.json @@ -1,6 +1,6 @@ { "name": "strapi-admin", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Strapi Admin", "repository": { "type": "git", @@ -80,8 +80,8 @@ "reselect": "^3.0.1", "sanitize.css": "^4.1.0", "shelljs": "^0.7.8", - "strapi-helper-plugin": "3.0.0-beta.18.2", - "strapi-utils": "3.0.0-beta.18.2", + "strapi-helper-plugin": "3.0.0-beta.18.3", + "strapi-utils": "3.0.0-beta.18.3", "style-loader": "^0.23.1", "styled-components": "^4.2.0", "terser-webpack-plugin": "^1.2.3", diff --git a/packages/strapi-connector-bookshelf/lib/populate.js b/packages/strapi-connector-bookshelf/lib/populate.js index b57310468f..0fabee5b39 100644 --- a/packages/strapi-connector-bookshelf/lib/populate.js +++ b/packages/strapi-connector-bookshelf/lib/populate.js @@ -54,8 +54,21 @@ const populateBareAssociations = (definition, { prefix = '' } = {}) => { }); } - return `${prefix}${assoc.alias}`; - }); + const path = `${prefix}${assoc.alias}`; + const assocModel = findModelByAssoc({ assoc }); + + const polyAssocs = assocModel.associations + .filter(assoc => isPolymorphic({ assoc })) + .map(assoc => + formatPolymorphicPopulate({ + assoc, + prefix: `${path}.`, + }) + ); + + return [path, ...polyAssocs]; + }) + .reduce((acc, val) => acc.concat(val), []); }; const formatAssociationPopulate = ({ assoc, prefix = '' }) => { diff --git a/packages/strapi-connector-bookshelf/package.json b/packages/strapi-connector-bookshelf/package.json index f187a9ccbe..c6191746a7 100644 --- a/packages/strapi-connector-bookshelf/package.json +++ b/packages/strapi-connector-bookshelf/package.json @@ -1,6 +1,6 @@ { "name": "strapi-connector-bookshelf", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Bookshelf hook for the Strapi framework", "homepage": "http://strapi.io", "keywords": [ @@ -22,7 +22,7 @@ "lodash": "^4.17.11", "pluralize": "^7.0.0", "rimraf": "^2.6.3", - "strapi-utils": "3.0.0-beta.18.2" + "strapi-utils": "3.0.0-beta.18.3" }, "strapi": { "dependencies": [ diff --git a/packages/strapi-connector-mongoose/package.json b/packages/strapi-connector-mongoose/package.json index 7b4fd73532..967e68f3a3 100644 --- a/packages/strapi-connector-mongoose/package.json +++ b/packages/strapi-connector-mongoose/package.json @@ -1,6 +1,6 @@ { "name": "strapi-connector-mongoose", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Mongoose hook for the Strapi framework", "homepage": "http://strapi.io", "keywords": [ @@ -20,7 +20,7 @@ "mongoose-float": "^1.0.4", "mongoose-long": "^0.2.1", "pluralize": "^7.0.0", - "strapi-utils": "3.0.0-beta.18.2" + "strapi-utils": "3.0.0-beta.18.3" }, "author": { "email": "hi@strapi.io", diff --git a/packages/strapi-database/package.json b/packages/strapi-database/package.json index 248e044318..1c9204dd26 100644 --- a/packages/strapi-database/package.json +++ b/packages/strapi-database/package.json @@ -1,6 +1,6 @@ { "name": "strapi-database", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Strapi's database layer", "homepage": "http://strapi.io", "main": "./lib/index.js", diff --git a/packages/strapi-generate-api/package.json b/packages/strapi-generate-api/package.json index 0d7ba6d6cc..11e2c73f0b 100644 --- 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-beta.18.2", + "version": "3.0.0-beta.18.3", "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 e8f9c650d1..b647b4c7f9 100644 --- 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-beta.18.2", + "version": "3.0.0-beta.18.3", "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 68a7ca451f..a95acaca1f 100644 --- 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-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Generate a model for a Strapi API.", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-generate-new/lib/create-customized-project.js b/packages/strapi-generate-new/lib/create-customized-project.js index 3ee8971ccc..2e4da76727 100644 --- a/packages/strapi-generate-new/lib/create-customized-project.js +++ b/packages/strapi-generate-new/lib/create-customized-project.js @@ -164,7 +164,7 @@ async function askDatabaseInfos(scope) { } async function installDatabaseTestingDep({ scope, configuration }) { - let packageManager = scope.useYarn ? 'yarnpkg' : 'npm;'; + let packageManager = scope.useYarn ? 'yarnpkg' : 'npm'; let cmd = scope.useYarn ? ['--cwd', scope.tmpPath, 'add'] : ['install', '--prefix', scope.tmpPath]; diff --git a/packages/strapi-generate-new/package.json b/packages/strapi-generate-new/package.json index 7936c213ce..e8cb045ad4 100644 --- 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-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Generate a new Strapi application.", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-generate-plugin/package.json b/packages/strapi-generate-plugin/package.json index 3d5afe87bc..3f5b4069c9 100644 --- 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-beta.18.2", + "version": "3.0.0-beta.18.3", "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 fd27a701e8..bcf4158cf3 100644 --- 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-beta.18.2", + "version": "3.0.0-beta.18.3", "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 acb8a7ffa1..71297b9faf 100644 --- 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-beta.18.2", + "version": "3.0.0-beta.18.3", "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 2e904d6931..b3450943c7 100644 --- a/packages/strapi-generate/package.json +++ b/packages/strapi-generate/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Master of ceremonies for the Strapi generators.", "homepage": "http://strapi.io", "keywords": [ @@ -20,7 +20,7 @@ "fs-extra": "^8.0.1", "lodash": "^4.17.11", "reportback": "^2.0.2", - "strapi-utils": "3.0.0-beta.18.2" + "strapi-utils": "3.0.0-beta.18.3" }, "author": { "name": "Strapi team", diff --git a/packages/strapi-helper-plugin/package.json b/packages/strapi-helper-plugin/package.json index 67adf87d6e..b10fa94415 100644 --- 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-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Helper for Strapi plugins development", "files": [ "dist" diff --git a/packages/strapi-hook-ejs/package.json b/packages/strapi-hook-ejs/package.json index 006e235ab8..9f3b81a7a5 100644 --- a/packages/strapi-hook-ejs/package.json +++ b/packages/strapi-hook-ejs/package.json @@ -1,6 +1,6 @@ { "name": "strapi-hook-ejs", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "EJS hook for the Strapi framework", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-hook-redis/package.json b/packages/strapi-hook-redis/package.json index 535de10b0b..967a198123 100644 --- a/packages/strapi-hook-redis/package.json +++ b/packages/strapi-hook-redis/package.json @@ -1,6 +1,6 @@ { "name": "strapi-hook-redis", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Redis hook for the Strapi framework", "homepage": "http://strapi.io", "keywords": [ @@ -19,7 +19,7 @@ "lodash": "^4.17.11", "rimraf": "^2.6.3", "stack-trace": "0.0.10", - "strapi-utils": "3.0.0-beta.18.2" + "strapi-utils": "3.0.0-beta.18.3" }, "author": { "email": "hi@strapi.io", diff --git a/packages/strapi-middleware-views/package.json b/packages/strapi-middleware-views/package.json index a1e4b3b4a7..700fa69dfb 100644 --- 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-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Views middleware to enable server-side rendering for the Strapi framework", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-plugin-content-manager/package.json b/packages/strapi-plugin-content-manager/package.json index ae76bb4317..921fb4e48e 100644 --- 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-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "A powerful UI to easily manage your data.", "strapi": { "name": "Content Manager", @@ -32,8 +32,8 @@ "redux-immutable": "^4.0.0", "reselect": "^3.0.1", "showdown": "^1.9.0", - "strapi-helper-plugin": "3.0.0-beta.18.2", - "strapi-utils": "3.0.0-beta.18.2", + "strapi-helper-plugin": "3.0.0-beta.18.3", + "strapi-utils": "3.0.0-beta.18.3", "styled-components": "^4.2.0", "yup": "^0.27.0" }, diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/Search.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/Search.js new file mode 100644 index 0000000000..ff86470e3c --- /dev/null +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/Search.js @@ -0,0 +1,12 @@ +import styled from 'styled-components'; + +import { colors } from 'strapi-helper-plugin'; + +const Search = styled.input` + width: 100%; + padding: 0 21px; + outline: 0; + color: ${colors.leftMenu.black}; +`; + +export default Search; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/SearchWrapper.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/SearchWrapper.js new file mode 100644 index 0000000000..17b766255a --- /dev/null +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/SearchWrapper.js @@ -0,0 +1,34 @@ +import styled from 'styled-components'; +import { colors } from 'strapi-helper-plugin'; + +const SearchWrapper = styled.div` + position: relative; + margin-top: -2px; + &::after { + display: block; + content: ''; + height: 2px; + width: calc(100% - 20px); + background: ${colors.leftMenu.lightGrey}; + } + > svg { + position: absolute; + bottom: 15px; + left: 0; + font-size: 11px; + } + button { + position: absolute; + top: 1px; + right: 0; + padding: 5px 0 0px 5px; + line-height: 11px; + outline: 0; + i, + svg { + font-size: 11px; + } + } +`; + +export default SearchWrapper; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/Wrapper.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/Wrapper.js index ab22159a8e..5f3d74b10f 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/Wrapper.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/Wrapper.js @@ -36,6 +36,17 @@ const Wrapper = styled.div` font-size: 1em; color: #bdbdbd; } + + .search { + display: flex; + padding-top: 2px; + color: #919bae; + > button { + margin-top: -8px; + font-size: 1.3rem; + outline: 0; + } + } `; Wrapper.defaultProps = { diff --git a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/index.js b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/index.js index 1be2760ee2..0bf265042a 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/components/ComponentIconPicker/index.js @@ -1,9 +1,12 @@ -import React, { useState } from 'react'; +import React, { createRef, useEffect, useState } from 'react'; import { Label, ErrorMessage } from '@buffetjs/styles'; import { AutoSizer, Collection } from 'react-virtualized'; import PropTypes from 'prop-types'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import useDataManager from '../../hooks/useDataManager'; import CellRenderer from './CellRenderer'; +import Search from './Search'; +import SearchWrapper from './SearchWrapper'; import Wrapper from './Wrapper'; const ComponentIconPicker = ({ @@ -15,9 +18,7 @@ const ComponentIconPicker = ({ value, }) => { const { allIcons, allComponentsIconAlreadyTaken } = useDataManager(); - const [originalIcon] = useState(value); - - const icons = allIcons.filter(ico => { + const initialIcons = allIcons.filter(ico => { if (isCreating) { return !allComponentsIconAlreadyTaken.includes(ico); } @@ -27,6 +28,18 @@ const ComponentIconPicker = ({ .filter(icon => icon !== originalIcon) .includes(ico); }); + const ref = createRef(); + const [originalIcon] = useState(value); + const [showSearch, setShowSearch] = useState(false); + const [search, setSearch] = useState(''); + const [icons, setIcons] = useState(initialIcons); + const toggleSearch = () => setShowSearch(prev => !prev); + + useEffect(() => { + if (showSearch && ref.current) { + ref.current.focus(); + } + }, [ref, showSearch]); const cellCount = icons.length; @@ -54,9 +67,42 @@ const ComponentIconPicker = ({ return ( - +
+ + {!showSearch ? ( + + ) : ( + + + + { + setSearch(value); + setIcons(() => + initialIcons.filter(icon => icon.includes(value)) + ); + }} + value={search} + placeholder="search…" + /> + + + )} +
{({ width }) => { return ( diff --git a/packages/strapi-plugin-content-type-builder/package.json b/packages/strapi-plugin-content-type-builder/package.json index b210bd4cba..90edd52e07 100644 --- 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-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Strapi plugin to create content type (API).", "strapi": { "name": "Content Type Builder", @@ -29,9 +29,9 @@ "redux": "^4.0.1", "redux-immutable": "^4.0.0", "reselect": "^3.0.1", - "strapi-generate": "3.0.0-beta.18.2", - "strapi-generate-api": "3.0.0-beta.18.2", - "strapi-helper-plugin": "3.0.0-beta.18.2", + "strapi-generate": "3.0.0-beta.18.3", + "strapi-generate-api": "3.0.0-beta.18.3", + "strapi-helper-plugin": "3.0.0-beta.18.3", "yup": "^0.27.0" }, "author": { diff --git a/packages/strapi-plugin-content-type-builder/services/schema-builder/content-type-builder.js b/packages/strapi-plugin-content-type-builder/services/schema-builder/content-type-builder.js index 621ca22374..e80e1864a8 100644 --- a/packages/strapi-plugin-content-type-builder/services/schema-builder/content-type-builder.js +++ b/packages/strapi-plugin-content-type-builder/services/schema-builder/content-type-builder.js @@ -10,12 +10,13 @@ const createSchemaHandler = require('./schema-handler'); module.exports = function createComponentBuilder() { return { - setRelation({ key, modelName, attribute }) { + setRelation({ key, modelName, plugin, attribute }) { this.contentTypes.get(attribute.target).setAttribute( attribute.targetAttribute, generateRelation({ key, attribute, + plugin, modelName, }) ); @@ -93,6 +94,7 @@ module.exports = function createComponentBuilder() { this.setRelation({ key, modelName: contentType.modelName, + plugin: contentType.plugin, attribute, }); } @@ -153,6 +155,7 @@ module.exports = function createComponentBuilder() { return this.setRelation({ key, modelName: contentType.modelName, + plugin: contentType.plugin, attribute: newAttributes[key], }); } @@ -172,6 +175,7 @@ module.exports = function createComponentBuilder() { return this.setRelation({ key, modelName: contentType.modelName, + plugin: contentType.plugin, attribute: newAttribute, }); } @@ -185,6 +189,7 @@ module.exports = function createComponentBuilder() { this.setRelation({ key, modelName: contentType.modelName, + plugin: contentType.plugin, attribute, }); } @@ -227,9 +232,10 @@ module.exports = function createComponentBuilder() { const createContentTypeUID = ({ name }) => `application::${nameToSlug(name)}.${nameToSlug(name)}`; -const generateRelation = ({ key, attribute, modelName }) => { +const generateRelation = ({ key, attribute, plugin, modelName }) => { const opts = { via: key, + plugin, columnName: attribute.targetColumnName || undefined, }; diff --git a/packages/strapi-plugin-documentation/package.json b/packages/strapi-plugin-documentation/package.json index 61dbcd2e4c..5374230ea0 100755 --- a/packages/strapi-plugin-documentation/package.json +++ b/packages/strapi-plugin-documentation/package.json @@ -1,6 +1,6 @@ { "name": "strapi-plugin-documentation", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "This is the description of the plugin.", "strapi": { "name": "Documentation", @@ -32,7 +32,7 @@ "redux": "^4.0.1", "redux-immutable": "^4.0.0", "reselect": "^4.0.0", - "strapi-helper-plugin": "3.0.0-beta.18.2", + "strapi-helper-plugin": "3.0.0-beta.18.3", "swagger-ui-dist": "3.24.3" }, "author": { diff --git a/packages/strapi-plugin-email/package.json b/packages/strapi-plugin-email/package.json index 0581449610..b88104bc61 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-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "This is the description of the plugin.", "strapi": { "name": "Email", @@ -12,13 +12,13 @@ "test": "echo \"no tests yet\"" }, "dependencies": { - "strapi-provider-email-sendmail": "3.0.0-beta.18.2", - "strapi-utils": "3.0.0-beta.18.2" + "strapi-provider-email-sendmail": "3.0.0-beta.18.3", + "strapi-utils": "3.0.0-beta.18.3" }, "devDependencies": { "react-copy-to-clipboard": "5.0.1", "rimraf": "^2.6.3", - "strapi-helper-plugin": "3.0.0-beta.18.2" + "strapi-helper-plugin": "3.0.0-beta.18.3" }, "author": { "name": "Strapi team", diff --git a/packages/strapi-plugin-graphql/package.json b/packages/strapi-plugin-graphql/package.json index 5e27c441bd..8308190a7f 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-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "This is the description of the plugin.", "strapi": { "name": "graphql", @@ -23,7 +23,7 @@ "graphql-type-long": "^0.1.1", "koa-compose": "^4.1.0", "pluralize": "^7.0.0", - "strapi-utils": "3.0.0-beta.18.2" + "strapi-utils": "3.0.0-beta.18.3" }, "devDependencies": { "cross-env": "^5.2.0", diff --git a/packages/strapi-plugin-upload/package.json b/packages/strapi-plugin-upload/package.json index 493c77cf4b..21cf7e6b1b 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-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "This is the description of the plugin.", "strapi": { "name": "Files Upload", @@ -23,9 +23,9 @@ "react-router-dom": "^5.0.0", "react-transition-group": "^2.5.0", "reactstrap": "^5.0.0", - "strapi-helper-plugin": "3.0.0-beta.18.2", - "strapi-provider-upload-local": "3.0.0-beta.18.2", - "strapi-utils": "3.0.0-beta.18.2", + "strapi-helper-plugin": "3.0.0-beta.18.3", + "strapi-provider-upload-local": "3.0.0-beta.18.3", + "strapi-utils": "3.0.0-beta.18.3", "stream-to-array": "^2.3.0", "uuid": "^3.2.1" }, diff --git a/packages/strapi-plugin-users-permissions/admin/src/components/PopUpForm/index.js b/packages/strapi-plugin-users-permissions/admin/src/components/PopUpForm/index.js index 6f69c3fe89..0ed9242674 100644 --- a/packages/strapi-plugin-users-permissions/admin/src/components/PopUpForm/index.js +++ b/packages/strapi-plugin-users-permissions/admin/src/components/PopUpForm/index.js @@ -70,6 +70,8 @@ class PopUpForm extends React.Component { return `${strapi.backendURL}/connect/twitter/callback`; case 'instagram': return `${strapi.backendURL}/connect/instagram/callback`; + case 'vk': + return `${strapi.backendURL}/connect/vk/callback`; default: { const value = get(this.props.values, 'callback', ''); diff --git a/packages/strapi-plugin-users-permissions/admin/src/translations/en.json b/packages/strapi-plugin-users-permissions/admin/src/translations/en.json index 02430b7533..8b80cf3b9a 100644 --- a/packages/strapi-plugin-users-permissions/admin/src/translations/en.json +++ b/packages/strapi-plugin-users-permissions/admin/src/translations/en.json @@ -85,6 +85,7 @@ "PopUpForm.Providers.github.providerConfig.redirectURL": "The redirect URL to add in your GitHub application configurations", "PopUpForm.Providers.google.providerConfig.redirectURL": "The redirect URL to add in your Google application configurations", "PopUpForm.Providers.instagram.providerConfig.redirectURL": "The redirect URL to add in your Instagram application configurations", + "PopUpForm.Providers.vk.providerConfig.redirectURL": "The redirect URL to add in your VK application configurations", "PopUpForm.Providers.key.label": "Client ID", "PopUpForm.Providers.key.placeholder": "TEXT", "PopUpForm.Providers.linkedin2.providerConfig.redirectURL": "The redirect URL to add in your Linkedin application configurations", diff --git a/packages/strapi-plugin-users-permissions/admin/src/translations/ru.json b/packages/strapi-plugin-users-permissions/admin/src/translations/ru.json index da20f905f7..3391cb2539 100644 --- a/packages/strapi-plugin-users-permissions/admin/src/translations/ru.json +++ b/packages/strapi-plugin-users-permissions/admin/src/translations/ru.json @@ -84,6 +84,7 @@ "PopUpForm.Providers.github.providerConfig.redirectURL": "URL-адрес перенаправления, который необходимо добавить в настройки GitHub приложения", "PopUpForm.Providers.google.providerConfig.redirectURL": "URL-адрес перенаправления, который необходимо добавить в настройки Google приложения", "PopUpForm.Providers.instagram.providerConfig.redirectURL": "URL-адрес перенаправления, который необходимо добавить в настройки Instagram приложения", + "PopUpForm.Providers.vk.providerConfig.redirectURL": "URL-адрес перенаправления, который необходимо добавить в настройки VK приложения", "PopUpForm.Providers.key.label": "Client ID", "PopUpForm.Providers.key.placeholder": "TEXT", "PopUpForm.Providers.linkedin2.providerConfig.redirectURL": "URL-адрес перенаправления, который необходимо добавить в настройки Linkedin приложения", diff --git a/packages/strapi-plugin-users-permissions/config/functions/bootstrap.js b/packages/strapi-plugin-users-permissions/config/functions/bootstrap.js index f546b1aaf2..67028d1226 100644 --- a/packages/strapi-plugin-users-permissions/config/functions/bootstrap.js +++ b/packages/strapi-plugin-users-permissions/config/functions/bootstrap.js @@ -89,6 +89,14 @@ module.exports = async () => { secret: '', callback: '/auth/instagram/callback', }, + vk: { + enabled: false, + icon: 'vk', + key: '', + secret: '', + callback: '/auth/vk/callback', + scope: ['email'], + }, }; const prevGrantConfig = (await pluginStore.get({ key: 'grant' })) || {}; // store grant auth config to db diff --git a/packages/strapi-plugin-users-permissions/package.json b/packages/strapi-plugin-users-permissions/package.json index 0117c7bf03..73b3cfef74 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-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Protect your API with a full-authentication process based on JWT", "strapi": { "name": "Roles & Permissions", @@ -31,8 +31,8 @@ "reactstrap": "^5.0.0", "redux-saga": "^0.16.0", "request": "^2.83.0", - "strapi-helper-plugin": "3.0.0-beta.18.2", - "strapi-utils": "3.0.0-beta.18.2", + "strapi-helper-plugin": "3.0.0-beta.18.3", + "strapi-utils": "3.0.0-beta.18.3", "uuid": "^3.1.0" }, "devDependencies": { diff --git a/packages/strapi-plugin-users-permissions/services/Providers.js b/packages/strapi-plugin-users-permissions/services/Providers.js index 0d0b821739..671e5e2d00 100644 --- a/packages/strapi-plugin-users-permissions/services/Providers.js +++ b/packages/strapi-plugin-users-permissions/services/Providers.js @@ -370,6 +370,25 @@ const getProfile = async (provider, query, callback) => { }); break; } + case 'vk': { + const vk = new Purest({ provider: 'vk' }); + + vk.query() + .get('users.get') + .auth(access_token) + .qs({ id: query.raw.user_id, v: '5.013' }) + .request((err, res, body) => { + if (err) { + callback(err); + } else { + callback(null, { + username: `${body.response[0].last_name} ${body.response[0].first_name}`, + email: query.raw.email, + }); + } + }); + break; + } default: callback({ message: 'Unknown provider.', diff --git a/packages/strapi-plugin-users-permissions/services/User.js b/packages/strapi-plugin-users-permissions/services/User.js index eecf20edee..a970ec3aec 100644 --- a/packages/strapi-plugin-users-permissions/services/User.js +++ b/packages/strapi-plugin-users-permissions/services/User.js @@ -45,8 +45,8 @@ module.exports = { * Promise to fetch a/an user. * @return {Promise} */ - fetch(params) { - return strapi.query('user', 'users-permissions').findOne(params); + fetch(params, populate) { + return strapi.query('user', 'users-permissions').findOne(params, populate); }, /** diff --git a/packages/strapi-provider-email-amazon-ses/package.json b/packages/strapi-provider-email-amazon-ses/package.json index 6e2aa7dd3a..ae2d8bbfce 100644 --- a/packages/strapi-provider-email-amazon-ses/package.json +++ b/packages/strapi-provider-email-amazon-ses/package.json @@ -1,6 +1,6 @@ { "name": "strapi-provider-email-amazon-ses", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Amazon SES provider for strapi email", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-provider-email-mailgun/package.json b/packages/strapi-provider-email-mailgun/package.json index 4ce84c41c9..f820110108 100644 --- a/packages/strapi-provider-email-mailgun/package.json +++ b/packages/strapi-provider-email-mailgun/package.json @@ -1,6 +1,6 @@ { "name": "strapi-provider-email-mailgun", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Mailgun provider for strapi email plugin", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-provider-email-sendgrid/package.json b/packages/strapi-provider-email-sendgrid/package.json index b4439f49dd..a86404f9bb 100644 --- a/packages/strapi-provider-email-sendgrid/package.json +++ b/packages/strapi-provider-email-sendgrid/package.json @@ -1,6 +1,6 @@ { "name": "strapi-provider-email-sendgrid", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Sendgrid provider for strapi email", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-provider-email-sendmail/package.json b/packages/strapi-provider-email-sendmail/package.json index 4e96b01557..b3c20a5ffc 100644 --- a/packages/strapi-provider-email-sendmail/package.json +++ b/packages/strapi-provider-email-sendmail/package.json @@ -1,6 +1,6 @@ { "name": "strapi-provider-email-sendmail", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Sendmail provider for strapi email", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-provider-upload-aws-s3/package.json b/packages/strapi-provider-upload-aws-s3/package.json index 7506758199..12d62940f1 100644 --- a/packages/strapi-provider-upload-aws-s3/package.json +++ b/packages/strapi-provider-upload-aws-s3/package.json @@ -1,6 +1,6 @@ { "name": "strapi-provider-upload-aws-s3", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "AWS S3 provider for strapi upload", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-provider-upload-cloudinary/package.json b/packages/strapi-provider-upload-cloudinary/package.json index 9379faf2ee..3fa629a8c2 100644 --- a/packages/strapi-provider-upload-cloudinary/package.json +++ b/packages/strapi-provider-upload-cloudinary/package.json @@ -1,6 +1,6 @@ { "name": "strapi-provider-upload-cloudinary", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Cloudinary provider for strapi upload", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-provider-upload-local/package.json b/packages/strapi-provider-upload-local/package.json index 7408cf31fd..2573dea881 100644 --- a/packages/strapi-provider-upload-local/package.json +++ b/packages/strapi-provider-upload-local/package.json @@ -1,6 +1,6 @@ { "name": "strapi-provider-upload-local", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Local provider for strapi upload", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-provider-upload-rackspace/package.json b/packages/strapi-provider-upload-rackspace/package.json index fa50e509f7..dec8378f2e 100644 --- a/packages/strapi-provider-upload-rackspace/package.json +++ b/packages/strapi-provider-upload-rackspace/package.json @@ -1,6 +1,6 @@ { "name": "strapi-provider-upload-rackspace", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "Rackspace provider for strapi upload", "main": "./lib", "keywords": [], diff --git a/packages/strapi-utils/lib/parse-multipart.js b/packages/strapi-utils/lib/parse-multipart.js index 883bb830fe..200d382cf5 100644 --- a/packages/strapi-utils/lib/parse-multipart.js +++ b/packages/strapi-utils/lib/parse-multipart.js @@ -25,7 +25,7 @@ module.exports = ctx => { if (fullPath.length <= 1 || fullPath[0] !== 'files') { throw strapi.errors.badRequest( - `When using multipart/form-data you need to provide your files by prefixing them witht the 'files'.` + `When using multipart/form-data you need to provide your files by prefixing them with the 'files'.` ); } diff --git a/packages/strapi-utils/package.json b/packages/strapi-utils/package.json index 8b8108a24a..42454cbad1 100644 --- a/packages/strapi-utils/package.json +++ b/packages/strapi-utils/package.json @@ -1,6 +1,6 @@ { "name": "strapi-utils", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "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 1afd7a5a99..7483726d53 100644 --- a/packages/strapi/package.json +++ b/packages/strapi/package.json @@ -1,6 +1,6 @@ { "name": "strapi", - "version": "3.0.0-beta.18.2", + "version": "3.0.0-beta.18.3", "description": "An open source headless CMS solution to create and manage your own API. It provides a powerful dashboard and features to make your life easier. Databases supported: MongoDB, MySQL, MariaDB, PostgreSQL, SQLite", "homepage": "http://strapi.io", "directories": { @@ -49,16 +49,16 @@ "resolve-cwd": "^3.0.0", "rimraf": "^2.6.2", "shelljs": "^0.8.3", - "strapi-database": "3.0.0-beta.18.2", - "strapi-generate": "3.0.0-beta.18.2", - "strapi-generate-api": "3.0.0-beta.18.2", - "strapi-generate-controller": "3.0.0-beta.18.2", - "strapi-generate-model": "3.0.0-beta.18.2", - "strapi-generate-new": "3.0.0-beta.18.2", - "strapi-generate-plugin": "3.0.0-beta.18.2", - "strapi-generate-policy": "3.0.0-beta.18.2", - "strapi-generate-service": "3.0.0-beta.18.2", - "strapi-utils": "3.0.0-beta.18.2" + "strapi-database": "3.0.0-beta.18.3", + "strapi-generate": "3.0.0-beta.18.3", + "strapi-generate-api": "3.0.0-beta.18.3", + "strapi-generate-controller": "3.0.0-beta.18.3", + "strapi-generate-model": "3.0.0-beta.18.3", + "strapi-generate-new": "3.0.0-beta.18.3", + "strapi-generate-plugin": "3.0.0-beta.18.3", + "strapi-generate-policy": "3.0.0-beta.18.3", + "strapi-generate-service": "3.0.0-beta.18.3", + "strapi-utils": "3.0.0-beta.18.3" }, "scripts": { "test": "jest --verbose",