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
+}