From ad9b39e164468d4dd50c08953ad5fe3de1132e06 Mon Sep 17 00:00:00 2001 From: cyril lopez Date: Thu, 30 Nov 2017 16:34:43 +0100 Subject: [PATCH] Add handler to get the plugins routes --- .../admin/src/components/ListRow/index.js | 2 +- .../admin/src/components/Policies/index.js | 7 ++++++- .../admin/src/containers/EditPage/actions.js | 8 ++++++++ .../admin/src/containers/EditPage/constants.js | 1 + .../admin/src/containers/EditPage/index.js | 1 + .../admin/src/containers/EditPage/reducer.js | 4 ++++ .../admin/src/containers/EditPage/saga.js | 9 +++++++-- .../strapi-plugin-users-permissions/config/roles.json | 8 ++++++++ .../config/routes.json | 8 ++++++++ .../controllers/UsersPermissions.js | 11 +++++++++++ .../services/UsersPermissions.js | 8 ++++++++ 11 files changed, 63 insertions(+), 4 deletions(-) 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 74c15cb957..885579f902 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 @@ -56,7 +56,7 @@ class ListRow extends React.Component { // eslint-disable-line react/prefer-stat {this.props.item.description}
- {this.props.item.nb_users}  + {this.props.item.nb_users || 0}  {this.props.item.nb_users > 1 ? ( 'users' ) : ( diff --git a/packages/strapi-plugin-users-permissions/admin/src/components/Policies/index.js b/packages/strapi-plugin-users-permissions/admin/src/components/Policies/index.js index c9da99ca7a..1af5ab45e0 100644 --- a/packages/strapi-plugin-users-permissions/admin/src/components/Policies/index.js +++ b/packages/strapi-plugin-users-permissions/admin/src/components/Policies/index.js @@ -21,7 +21,7 @@ class Policies extends React.Component { // eslint-disable-line react/prefer-sta const baseTitle = 'users-permissions.Policies.header'; const title = this.props.shouldDisplayPoliciesHint ? 'hint' : 'title'; const value = get(this.props.values, this.props.inputSelectName); - + console.log(this.props.routes); return (
@@ -52,8 +52,13 @@ Policies.contextTypes = { onChange: PropTypes.func.isRequired, }; +Policies.defaultProps = { + routes: {}, +}; + Policies.propTypes = { inputSelectName: PropTypes.string.isRequired, + routes: PropTypes.object, selectOptions: PropTypes.array.isRequired, shouldDisplayPoliciesHint: PropTypes.bool.isRequired, values: PropTypes.object.isRequired, 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 d4fce24c37..b02d086681 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 @@ -13,6 +13,7 @@ import { GET_POLICIES_SUCCEEDED, GET_ROLE, GET_ROLE_SUCCEEDED, + GET_ROUTES_SUCCEEDED, GET_USER, GET_USER_SUCCEEDED, ON_CANCEL, @@ -95,6 +96,13 @@ export function getRoleSucceeded(data) { }; } +export function getRoutesSucceeded(routes) { + return { + type: GET_ROUTES_SUCCEEDED, + routes, + }; +} + export function getUser(user) { return { type: GET_USER, 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 55ffa7d17f..cc35633b6b 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 @@ -11,6 +11,7 @@ export const GET_POLICIES = 'UsersPermissions/EditPage/GET_POLICIES'; export const GET_POLICIES_SUCCEEDED = 'UsersPermissions/EditPage/GET_POLICIES_SUCCEEDED'; export const GET_ROLE = 'UsersPermissions/EditPage/GET_ROLE'; export const GET_ROLE_SUCCEEDED = 'UsersPermissions/EditPage/GET_ROLE_SUCCEEDED'; +export const GET_ROUTES_SUCCEEDED = 'UsersPermissions/EditPage/GET_ROUTES_SUCCEEDED'; export const GET_USER = 'UsersPermissions/EditPage/GET_USER'; export const GET_USER_SUCCEEDED = 'UsersPermissions/EditPage/GET_USER_SUCCEEDED'; export const ON_CANCEL = 'UsersPermissions/EditPage/ON_CANCEL'; 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 0c4546bdb0..9f658e934b 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 @@ -207,6 +207,7 @@ export class EditPage extends React.Component { // eslint-disable-line react/pre diff --git a/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/reducer.js b/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/reducer.js index 35ee630a1c..e8acb72f01 100644 --- a/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/reducer.js +++ b/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/reducer.js @@ -12,6 +12,7 @@ import { GET_POLICIES_SUCCEEDED, GET_ROLE_SUCCEEDED, GET_USER_SUCCEEDED, + GET_ROUTES_SUCCEEDED, ON_CANCEL, ON_CHANGE_INPUT, ON_CLICK_ADD, @@ -41,6 +42,7 @@ const initialState = fromJS({ modifiedData: Map({}), policies: List([]), roleId: '', + routes: Map([]), shouldDisplayPoliciesHint: true, users: List([]), }); @@ -61,6 +63,8 @@ function editPageReducer(state = initialState, action) { .set('didGetUsers', !state.get('didGetUsers')) .set('initialData', action.form) .set('modifiedData', action.form); + case GET_ROUTES_SUCCEEDED: + return state.set('routes', Map(action.routes.routes)); case GET_USER_SUCCEEDED: return state .set('didFetchUsers', !state.get('didFetchUsers')) diff --git a/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/saga.js b/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/saga.js index 8fd17ebee3..86dd9ca380 100644 --- a/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/saga.js +++ b/packages/strapi-plugin-users-permissions/admin/src/containers/EditPage/saga.js @@ -14,6 +14,7 @@ import { getPermissionsSucceeded, getPoliciesSucceeded, getRoleSucceeded, + getRoutesSucceeded, getUserSucceeded, submitSucceeded, } from './actions'; @@ -53,9 +54,13 @@ export function* permissionsGet() { export function* policiesGet() { try { - const response = yield call(request, '/users-permissions/policies', { method: 'GET' }); + const response = yield [ + call(request, '/users-permissions/policies', { method: 'GET' }), + call(request, '/users-permissions/routes', { method: 'GET' }), + ]; - yield put(getPoliciesSucceeded(response)); + yield put(getPoliciesSucceeded(response[0])); + yield put(getRoutesSucceeded(response[1])); } catch(err) { strapi.notification.error('users-permissions.EditPage.notification.policies.error'); } diff --git a/packages/strapi-plugin-users-permissions/config/roles.json b/packages/strapi-plugin-users-permissions/config/roles.json index fbf8fc91f5..45e9908484 100644 --- a/packages/strapi-plugin-users-permissions/config/roles.json +++ b/packages/strapi-plugin-users-permissions/config/roles.json @@ -247,6 +247,10 @@ "identity": { "enabled": true, "policy": "" + }, + "getRoutes": { + "enabled": true, + "policy": "" } } } @@ -501,6 +505,10 @@ "identity": { "enabled": false, "policy": "" + }, + "getRoutes": { + "enabled": false, + "policy": "" } } } diff --git a/packages/strapi-plugin-users-permissions/config/routes.json b/packages/strapi-plugin-users-permissions/config/routes.json index 6792cf3c47..ea4ef6f338 100644 --- a/packages/strapi-plugin-users-permissions/config/routes.json +++ b/packages/strapi-plugin-users-permissions/config/routes.json @@ -56,6 +56,14 @@ "policies": [] } }, + { + "method": "GET", + "path": "/routes", + "handler": "UsersPermissions.getRoutes", + "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 cd9541c2a9..dba6e1ffcb 100644 --- a/packages/strapi-plugin-users-permissions/controllers/UsersPermissions.js +++ b/packages/strapi-plugin-users-permissions/controllers/UsersPermissions.js @@ -95,6 +95,17 @@ module.exports = { } }, + getRoutes: async (ctx) => { + try { + const routes = await strapi.plugins['users-permissions'].services.userspermissions.getRoutes(); + + ctx.send({ routes }); + } catch(err) { + console.log(err); + ctx.badRequest(null, [{ messages: [{ id: 'Not found' }] }]); + } + }, + index: async (ctx) => { // Add your own logic here. diff --git a/packages/strapi-plugin-users-permissions/services/UsersPermissions.js b/packages/strapi-plugin-users-permissions/services/UsersPermissions.js index 18e85f3c4d..605737daf9 100644 --- a/packages/strapi-plugin-users-permissions/services/UsersPermissions.js +++ b/packages/strapi-plugin-users-permissions/services/UsersPermissions.js @@ -95,6 +95,14 @@ module.exports = { return formattedRoles; }, + getRoutes: async () => { + return Object.keys(strapi.plugins).reduce((acc, current) => { + acc[current] = strapi.plugins[current].config.routes; + + return acc; + }, {}); + }, + getRoleConfigPath: () => ( path.join( strapi.config.appPath,