@@ -23,13 +23,16 @@ function PermissionListItem(props) {
2323 editable,
2424 depth,
2525 setPermissions,
26+ setRemovedDefaultPermissions,
27+ removedDefaultPermissions,
2628 } = props ;
2729 const isCategory = ! ! subperms ;
2830 const [ infoRoleModal , setinfoRoleModal ] = useState ( false ) ;
2931 const [ modalContent , setContent ] = useState ( null ) ;
3032 const [ isMobile , setIsMobile ] = useState ( false ) ;
3133 const hasThisPermission =
32- rolePermissions . includes ( permission ) || immutablePermissions . includes ( permission ) ;
34+ rolePermissions . includes ( permission ) ||
35+ ( immutablePermissions . includes ( permission ) && ! removedDefaultPermissions ?. includes ( permission ) ) ;
3336 const { updateModalStatus } = useContext ( ModalContext ) ;
3437
3538 const darkMode = useSelector ( state => state . theme . darkMode ) ;
@@ -51,16 +54,23 @@ function PermissionListItem(props) {
5154 const toggleInfoRoleModal = ( ) => {
5255 setinfoRoleModal ( ! infoRoleModal ) ;
5356 } ;
54-
5557 const togglePermission = permissionKey => {
56- if ( rolePermissions . includes ( permissionKey ) || immutablePermissions . includes ( permissionKey ) ) {
58+ // Default perms can only be managed (Add/Delete) by users with "putUserProfilePermissions" perm.
59+ if ( immutablePermissions . includes ( permissionKey ) ) {
60+ if ( ! removedDefaultPermissions ?. includes ( permissionKey ) ) {
61+ // deleteing default perm
62+ setRemovedDefaultPermissions ( previous => [ ...previous , permissionKey ] ) ;
63+ } else {
64+ // adding the default perm back
65+ setRemovedDefaultPermissions ( previous => previous . filter ( perm => perm !== permissionKey ) ) ;
66+ }
67+ } else if ( rolePermissions . includes ( permissionKey ) ) {
5768 setPermissions ( previous => previous . filter ( perm => perm !== permissionKey ) ) ;
5869 } else if ( rolePermissions . includes ( 'showModal' ) ) {
5970 setPermissions ( previous => [ ...previous , permissionKey ] ) ;
6071 } else {
6172 setPermissions ( previous => [ ...previous , permissionKey ] ) ;
6273 }
63-
6474 props . onChange ( ) ;
6575 } ;
6676
@@ -214,7 +224,9 @@ function PermissionListItem(props) {
214224 updateModalStatus ( true ) ;
215225 } }
216226 disabled = {
217- ! props . hasPermission ( 'putRole' ) || immutablePermissions . includes ( permission )
227+ ! props . hasPermission ( 'putRole' ) ||
228+ ( immutablePermissions . includes ( permission ) &&
229+ ! props . hasPermission ( 'putUserProfilePermissions' ) )
218230 }
219231 style = { darkMode ? boxStyleDark : boxStyle }
220232 >
@@ -241,6 +253,8 @@ function PermissionListItem(props) {
241253 onChange = { props . onChange }
242254 depth = { isMobile ? depth : depth + 1 }
243255 darkMode = { darkMode }
256+ removedDefaultPermissions = { removedDefaultPermissions }
257+ setRemovedDefaultPermissions = { setRemovedDefaultPermissions }
244258 />
245259 </ li >
246260 ) : null }
0 commit comments