From 3d66f18e1ac6da6412c52e6266808649be73925c Mon Sep 17 00:00:00 2001 From: cyril lopez Date: Wed, 15 Nov 2017 14:00:51 +0100 Subject: [PATCH] Change frontend routing and prepare for edit --- packages/strapi-helper-plugin/package.json | 2 +- .../admin/src/components/InputSearch/index.js | 5 +++ .../admin/src/components/ListRow/index.js | 2 +- .../admin/src/containers/App/index.js | 2 +- .../admin/src/containers/EditPage/actions.js | 36 ++++++++++++++- .../src/containers/EditPage/constants.js | 3 ++ .../admin/src/containers/EditPage/index.js | 15 +++++-- .../admin/src/containers/EditPage/reducer.js | 31 +++++-------- .../admin/src/translations/en.json | 4 +- .../config/fakeData.json | 44 +++++++++++++++++++ .../config/roles.json | 24 ++++++++++ .../config/routes.json | 8 ++++ .../controllers/UsersPermissions.js | 5 +++ .../package.json | 6 +-- 14 files changed, 154 insertions(+), 33 deletions(-) create mode 100644 packages/strapi-plugin-users-permissions/config/fakeData.json create mode 100644 packages/strapi-plugin-users-permissions/config/roles.json diff --git a/packages/strapi-helper-plugin/package.json b/packages/strapi-helper-plugin/package.json index 86f39af7da..e1f7194be0 100755 --- a/packages/strapi-helper-plugin/package.json +++ b/packages/strapi-helper-plugin/package.json @@ -115,4 +115,4 @@ "webpack-hot-middleware": "^2.18.2", "whatwg-fetch": "^2.0.3" } -} \ No newline at end of file +} diff --git a/packages/strapi-plugin-users-permissions/admin/src/components/InputSearch/index.js b/packages/strapi-plugin-users-permissions/admin/src/components/InputSearch/index.js index 360f9bb6a3..34eef2faec 100644 --- a/packages/strapi-plugin-users-permissions/admin/src/components/InputSearch/index.js +++ b/packages/strapi-plugin-users-permissions/admin/src/components/InputSearch/index.js @@ -21,6 +21,10 @@ class InputSearch extends React.Component { // eslint-disable-line react/prefer- if (nextProps.didDeleteUser !== this.props.didDeleteUser) { this.setState({ users: nextProps.values, filteredUsers: nextProps.values }); } + + if (nextProps.didGetUsers !== this.props.didGetUsers) { + this.setState({ users: nextProps.values, filteredUsers: nextProps.values }); + } } handleChange = ({ target }) => { @@ -77,6 +81,7 @@ InputSearch.defaultProps = { InputSearch.propTypes = { didDeleteUser: PropTypes.bool.isRequired, + didGetUsers: PropTypes.bool.isRequired, label: PropTypes.string.isRequired, labelValues: PropTypes.object, name: PropTypes.string.isRequired, diff --git a/packages/strapi-plugin-users-permissions/admin/src/components/ListRow/index.js b/packages/strapi-plugin-users-permissions/admin/src/components/ListRow/index.js index 6df229c426..a2c929c941 100644 --- a/packages/strapi-plugin-users-permissions/admin/src/components/ListRow/index.js +++ b/packages/strapi-plugin-users-permissions/admin/src/components/ListRow/index.js @@ -119,7 +119,7 @@ class ListRow extends React.Component { // eslint-disable-line react/prefer-stat handleClick = () => { switch (this.props.settingType) { case 'roles': - return router.push(`${router.location.pathname}/${this.props.item.id}`); + return router.push(`${router.location.pathname}/edit/${this.props.item.id}`); case 'providers': case 'email-templates': return router.push(`${router.location.pathname}#edit::${this.props.settingType}::${this.props.item.id}`); diff --git a/packages/strapi-plugin-users-permissions/admin/src/containers/App/index.js b/packages/strapi-plugin-users-permissions/admin/src/containers/App/index.js index 2918d7ebab..16efbef769 100755 --- a/packages/strapi-plugin-users-permissions/admin/src/containers/App/index.js +++ b/packages/strapi-plugin-users-permissions/admin/src/containers/App/index.js @@ -39,7 +39,7 @@ class App extends React.Component {
- + diff --git a/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/actions.js b/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/actions.js index 06d26e0e67..7fba969be3 100644 --- a/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/actions.js +++ b/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/actions.js @@ -3,12 +3,15 @@ * EditPage actions * */ - +import { List, Map } from 'immutable'; import { ADD_USER, + GET_ROLE, + GET_ROLE_SUCCEEDED, ON_CANCEL, ON_CHANGE_INPUT, ON_CLICK_DELETE, + SET_FORM, } from './constants'; export function addUser(newUser) { @@ -18,6 +21,19 @@ export function addUser(newUser) { }; } +export function getRole() { + return { + type: GET_ROLE, + }; +} + +export function getRoleSucceeded(data) { + return { + type: GET_ROLE_SUCCEEDED, + data, + }; +} + export function onCancel() { return { type: ON_CANCEL, @@ -38,3 +54,21 @@ export function onClickDelete(itemToDelete) { itemToDelete, }; } + +export function setForm() { + const form = Map({ + name: '', + description: '', + users: List([ + { name: 'Pierre Burgy' }, + { name: 'Jim Laurie' }, + { name: 'Aurelien Georget' }, + { name: 'Cyril Lopez' }, + ]), + }); + + return { + type: SET_FORM, + form, + }; +} diff --git a/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/constants.js b/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/constants.js index a6dc0e7500..3db2594e9e 100644 --- a/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/constants.js +++ b/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/constants.js @@ -5,6 +5,9 @@ */ export const ADD_USER = 'UsersPermissions/EditPage/ADD_USER'; +export const GET_ROLE = 'UsersPermissions/EditPage/GET_ROLE'; +export const GET_ROLE_SUCCEEDED = 'UsersPermissions/EditPage/GET_ROLE_SUCCEEDED'; export const ON_CANCEL = 'UsersPermissions/EditPage/ON_CANCEL'; export const ON_CHANGE_INPUT = 'UsersPermissions/EditPage/ON_CHANGE_INPUT'; export const ON_CLICK_DELETE = 'UsersPermissions/EditPage/ON_CLICK_DELETE'; +export const SET_FORM = 'UsersPermissions/EditPage/SET_FORM'; diff --git a/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/index.js b/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/index.js index f778bfee36..000ef80e38 100644 --- a/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/index.js +++ b/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/index.js @@ -28,6 +28,7 @@ import { onCancel, onChangeInput, onClickDelete, + setForm, } from './actions'; // Selectors @@ -39,6 +40,12 @@ import saga from './saga'; import styles from './styles.scss'; export class EditPage extends React.Component { // eslint-disable-line react/prefer-stateless-function + componentDidMount() { + if (this.props.match.params.actionType === 'create') { + this.props.setForm(); + } + } + pluginHeaderActions = [ { label: 'users-permissions.EditPage.cancel', @@ -55,13 +62,12 @@ export class EditPage extends React.Component { // eslint-disable-line react/pre ]; render() { - const pluginHeaderTitle = this.props.match.params.id === 'create' ? + const pluginHeaderTitle = this.props.match.params.actionType === 'create' ? 'users-permissions.EditPage.header.title.create' : 'users-permissions.EditPage.header.title'; - const pluginHeaderDescription = this.props.match.params.id === 'create' ? + const pluginHeaderDescription = this.props.match.params.actionType === 'create' ? 'users-permissions.EditPage.header.description.create' : 'users-permissions.EditPage.header.description'; - const pluginHeaderActions = this.props.editPage.showButtons ? this.pluginHeaderActions : []; return ( @@ -119,6 +125,7 @@ export class EditPage extends React.Component { // eslint-disable-line react/pre list.filter(o => o.name !== action.itemToDelete.name)); + case SET_FORM: + return state + .set('didGetUsers', !state.get('didGetUsers')) + .set('initialData', action.form) + .set('modifiedData', action.form); default: return state; } 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 b563c4ba5a..0674b0be96 100755 --- a/packages/strapi-plugin-users-permissions/admin/src/translations/en.json +++ b/packages/strapi-plugin-users-permissions/admin/src/translations/en.json @@ -47,9 +47,9 @@ "EditPage.form.roles.label.description": "Description", "EditPage.form.roles.label.name": "Name", "EditPage.form.roles.label.users": "Users associated with this role ({number})", - "EditPage.header.title": "{name}", + "EditPage.header.title": "{name} ", "EditPage.header.title.create": "Create a new role", - "EditPage.header.description": "{description}", + "EditPage.header.description": "{description} ", "EditPage.header.description.create": " ", "HeaderNav.link.advancedSettings": "Advanced settings", diff --git a/packages/strapi-plugin-users-permissions/config/fakeData.json b/packages/strapi-plugin-users-permissions/config/fakeData.json new file mode 100644 index 0000000000..6db35ea7e5 --- /dev/null +++ b/packages/strapi-plugin-users-permissions/config/fakeData.json @@ -0,0 +1,44 @@ +{ + "1": { + "description": "Allow editing and deleting (except users)", + "name": "moderateur", + "users": [ + { + "id": "11", + "name": "John Lennon" + }, + { + "id": "12", + "name": "Paul McCartney" + }, + { + "id": "13", + "name": "George Harrison" + }, + { + "id": "14", + "name": "Ringo Starr" + } + ], + "permissions": { + "application": { + "icon": "", + "description": "users-permissions.EditPage.permissions.application.description", + "controllers": { + "invoices": { + "actions": { + "delete": { + "enabled": true, + "policy": "entriesCreatedByUser" + }, + "update": { + "enabled": false, + "policy": "entriesCreatedByUser" + } + } + } + } + } + } + } +} diff --git a/packages/strapi-plugin-users-permissions/config/roles.json b/packages/strapi-plugin-users-permissions/config/roles.json new file mode 100644 index 0000000000..e3258574e6 --- /dev/null +++ b/packages/strapi-plugin-users-permissions/config/roles.json @@ -0,0 +1,24 @@ +{ + "1": { + "description": "Allow editing and deleting (except users)", + "name": "moderateur", + "permissions": { + "application": { + "controllers": { + "invoices": { + "actions": { + "delete": { + "enabled": true, + "policy": "entriesCreatedByUser" + }, + "update": { + "enabled": false, + "policy": "entriesCreatedByUser" + } + } + } + } + } + } + } +} diff --git a/packages/strapi-plugin-users-permissions/config/routes.json b/packages/strapi-plugin-users-permissions/config/routes.json index 95a6a2cc8f..2a3ab28021 100644 --- a/packages/strapi-plugin-users-permissions/config/routes.json +++ b/packages/strapi-plugin-users-permissions/config/routes.json @@ -16,6 +16,14 @@ "policies": [] } }, + { + "method": "GET", + "path": "/roles/:id", + "handler": "UsersPermissions.getRole", + "config": { + "policies": [] + } + }, { "method": "POST", diff --git a/packages/strapi-plugin-users-permissions/controllers/UsersPermissions.js b/packages/strapi-plugin-users-permissions/controllers/UsersPermissions.js index 7c49c2fc52..5a33b382b2 100644 --- a/packages/strapi-plugin-users-permissions/controllers/UsersPermissions.js +++ b/packages/strapi-plugin-users-permissions/controllers/UsersPermissions.js @@ -13,6 +13,11 @@ module.exports = { * * @return {Object} */ + getRole: async(ctx) => { + const { id } = ctx.params; + + ctx.send({ ok: true }); + }, index: async (ctx) => { // Add your own logic here. diff --git a/packages/strapi-plugin-users-permissions/package.json b/packages/strapi-plugin-users-permissions/package.json index 20095361c1..f3904ed6b7 100644 --- a/packages/strapi-plugin-users-permissions/package.json +++ b/packages/strapi-plugin-users-permissions/package.json @@ -26,7 +26,7 @@ "dependencies": {}, "devDependencies": { "cross-env": "^5.1.1", - "eslint": "^4.10.0", + "eslint": "^4.11.0", "eslint-config-airbnb": "^15.1.0", "eslint-config-airbnb-base": "^11.3.2", "eslint-config-prettier": "^2.7.0", @@ -37,7 +37,7 @@ "eslint-plugin-react": "^7.4.0", "eslint-plugin-redux-saga": "^0.4.0", "plop": "^1.9.0", - "prettier": "^1.7.4", + "prettier": "^1.8.2", "rimraf": "^2.6.2", "strapi-helper-plugin": "3.0.0-alpha.6.7", "webpack": "^3.8.1" @@ -59,4 +59,4 @@ "npm": ">= 3.0.0" }, "license": "MIT" -} \ No newline at end of file +}