diff --git a/packages/strapi-plugin-settings-manager/admin/src/containers/App/index.js b/packages/strapi-plugin-settings-manager/admin/src/containers/App/index.js index 1228c42342..2225d489dd 100755 --- a/packages/strapi-plugin-settings-manager/admin/src/containers/App/index.js +++ b/packages/strapi-plugin-settings-manager/admin/src/containers/App/index.js @@ -13,7 +13,7 @@ import { bindActionCreators, compose } from 'redux'; import 'flag-icon-css/css/flag-icon.css'; import 'react-select/dist/react-select.css'; import { Switch, Route } from 'react-router-dom'; - +import { isEmpty } from 'lodash'; import { pluginId } from 'app'; import injectSaga from 'utils/injectSaga'; @@ -21,7 +21,7 @@ import injectSaga from 'utils/injectSaga'; import HomePage from 'containers/HomePage'; import { menuFetch, environmentsFetch } from './actions'; -import { makeSelectLoading } from './selectors'; +import { makeSelectLoading, makeSelectSections } from './selectors'; import styles from './styles.scss'; import saga from './sagas'; @@ -33,6 +33,26 @@ class App extends React.Component { this.props.environmentsFetch(); } + componentWillUpdate(nextProps) { + if (!isEmpty(nextProps.sections) && nextProps.location.pathname !== '/plugins/settings-manager') { + const allowedPath = nextProps.sections.reduce((acc, current) => { + const slugs = current.items.reduce((acc, current) => { + acc.push(current.slug); + + return acc; + }, []); + return acc.concat(slugs); + }, []); + + const slug = nextProps.location.pathname.split('/')[3]; + const shouldRedirect = allowedPath.filter(el => el === slug).length === 0; + + if (shouldRedirect) { + this.props.history.push('/404'); + } + } + } + render() { return (