@@ -15,6 +15,7 @@ import { boxStyle } from 'styles';
1515import EditableInfoModal from 'components/UserProfile/EditableModal/EditableInfoModal' ;
1616import PermissionsPresetsModal from './PermissionsPresetsModal.jsx' ;
1717import { getPresetsByRole , createNewPreset } from 'actions/rolePermissionPresets' ;
18+ import hasPermission from '../../utils/permissions' ;
1819
1920
2021function RolePermissions ( props ) {
@@ -27,6 +28,10 @@ function RolePermissions(props) {
2728 const history = useHistory ( ) ;
2829 const [ showPresetModal , setShowPresetModal ] = useState ( false ) ;
2930
31+ const isEditableRole = props . role === 'Owner' ? props . hasPermission ( 'addDeleteEditOwners' ) : props . auth . user . role !== props . role ;
32+ const canEditRole = isEditableRole && props . hasPermission ( 'putRole' ) ;
33+ const canDeleteRole = isEditableRole && props . hasPermission ( 'deleteRole' ) ;
34+
3035 useEffect ( ( ) => {
3136 setRoleName ( props . role ) ;
3237 props . getPresets ( props . role ) ;
@@ -109,7 +114,7 @@ function RolePermissions(props) {
109114 < div className = "user-role-tab__name-container" >
110115 < div className = "name-container__role-name" >
111116 < h1 className = "user-role-tab__h1" > Role Name: { roleName } </ h1 >
112- { props ?. userRole === 'Owner' && (
117+ { canEditRole && (
113118 < FontAwesomeIcon
114119 icon = { faEdit }
115120 size = "lg"
@@ -118,7 +123,7 @@ function RolePermissions(props) {
118123 />
119124 ) }
120125 </ div >
121- { props ?. userRole === 'Owner' && (
126+ { canEditRole && (
122127 < div style = { { flexDirection : 'row' , display : 'flex' } } >
123128 < div className = "name-container__btn_columns" >
124129 < div className = "name-container__btns" >
@@ -151,7 +156,7 @@ function RolePermissions(props) {
151156 >
152157 Save
153158 </ Button >
154- < Button color = "danger" onClick = { toggleDeleteRoleModal } style = { boxStyle } >
159+ < Button color = "danger" onClick = { toggleDeleteRoleModal } style = { boxStyle } disabled = { ! canDeleteRole } >
155160 Delete Role
156161 </ Button >
157162 </ div >
@@ -222,7 +227,7 @@ function RolePermissions(props) {
222227 < PermissionList
223228 rolePermissions = { permissions }
224229 permissionsList = { permissionLabel }
225- editable = { true }
230+ editable = { canEditRole }
226231 setPermissions = { setPermissions }
227232 onChange = { ( ) => { setChanged ( true ) } }
228233 />
@@ -276,13 +281,14 @@ function RolePermissions(props) {
276281 ) ;
277282}
278283
279- const mapStateToProps = state => ( { roles : state . role . roles , presets : state . rolePreset . presets } ) ;
284+ const mapStateToProps = state => ( { roles : state . role . roles , presets : state . rolePreset . presets , auth : state . auth } ) ;
280285
281286const mapDispatchToProps = dispatch => ( {
282287 getAllRoles : ( ) => dispatch ( getAllRoles ( ) ) ,
283288 updateRole : ( roleId , updatedRole ) => dispatch ( updateRole ( roleId , updatedRole ) ) ,
284289 getPresets : role => dispatch ( getPresetsByRole ( role ) ) ,
285290 createNewPreset : newPreset => dispatch ( createNewPreset ( newPreset ) ) ,
291+ hasPermission : permission => dispatch ( hasPermission ( permission ) ) ,
286292} ) ;
287293
288294export default connect ( mapStateToProps , mapDispatchToProps ) ( RolePermissions ) ;
0 commit comments