diff --git a/src/helpers/protectComponent.js b/src/helpers/protectComponent.js new file mode 100644 index 000000000..8634fa494 --- /dev/null +++ b/src/helpers/protectComponent.js @@ -0,0 +1,27 @@ +import React from 'react' +import CoderBroken from '../assets/icons/coder-broken.svg' +import {hasPermission} from './permissions' + +function protectComponent(Component, permission, pageName) { + class ProtectedComponent extends React.Component { + render() { + if (!hasPermission(permission)) { + return ( + + + + + You don't have permission to access {pageName || 'this page'} + + + + ) + } + return + } + } + + return ProtectedComponent +} + +export default protectComponent diff --git a/src/projects/detail/components/EditProjectDefaultsForm/EditProjectDefaultsForm.jsx b/src/projects/detail/components/EditProjectDefaultsForm/EditProjectDefaultsForm.jsx index 6e022c300..c8e2bcea4 100644 --- a/src/projects/detail/components/EditProjectDefaultsForm/EditProjectDefaultsForm.jsx +++ b/src/projects/detail/components/EditProjectDefaultsForm/EditProjectDefaultsForm.jsx @@ -7,6 +7,8 @@ import { updateProject } from '../../../actions/project' import NDAField from '../NDAField' import GroupsField from '../GroupsField' import BillingAccountField from '../BillingAccountField' +import {PERMISSIONS} from '../../../../config/permissions' +import protectComponent from '../../../../helpers/protectComponent' import './EditProjectDefaultsForm.scss' @@ -106,4 +108,8 @@ const mapDispatchToProps = { updateProject } -export default connect(null, mapDispatchToProps)(EditProjectDefaultsForm) +export default protectComponent( + connect(null, mapDispatchToProps)(EditProjectDefaultsForm), + PERMISSIONS.VIEW_PROJECT_DEFAULTS, + 'Project Defaults' +)