@@ -16,47 +16,60 @@ import { PermissionsDataProvider, PermissionsFormProvider } from './contexts';
1616import {
1717 VAULT_MANAGER_PERMISSIONS_LIST ,
1818 NO_MANAGER_PERMISSION_LIST ,
19+ VAULT_ROOT_ROLES ,
1920} from 'modules/vaults' ;
21+ import { useVaultPermissions } from 'modules/vaults/hooks/use-vault-permissions' ;
2022
21- interface RenderPermissions {
23+ type PermissionSectionEntry = {
2224 permissionsTitle : string ;
2325 payload : PermissionsRoles [ ] ;
24- }
26+ canEditRole : VAULT_ROOT_ROLES ;
27+ } ;
2528
26- const renderPermissionsList : RenderPermissions [ ] = [
29+ const renderPermissionsList : PermissionSectionEntry [ ] = [
2730 {
2831 permissionsTitle : 'Vault Manager Permissions' ,
32+ canEditRole : 'defaultAdmin' ,
2933 payload : VAULT_MANAGER_PERMISSIONS_LIST ,
3034 } ,
3135 {
3236 permissionsTitle : 'Node Operator Manager Permissions' ,
37+ canEditRole : 'nodeOperatorManager' ,
3338 payload : NO_MANAGER_PERMISSION_LIST ,
3439 } ,
3540] ;
3641
42+ const PermissionsSection = ( props : PermissionSectionEntry ) => {
43+ const { hasPermission } = useVaultPermissions ( props . canEditRole ) ;
44+
45+ return (
46+ < PermissionContainer >
47+ < PermissionGroupTitle > { props . permissionsTitle } </ PermissionGroupTitle >
48+ < PermissionBlock >
49+ { props . payload . map ( ( { role, title, tooltip } ) => {
50+ return (
51+ < PermissionRoleWrapper key = { role } >
52+ < RoleDescription
53+ permission = { role }
54+ description = { title }
55+ tooltip = { tooltip }
56+ />
57+ < AddressList readonly = { ! hasPermission } permission = { role } />
58+ </ PermissionRoleWrapper >
59+ ) ;
60+ } ) }
61+ </ PermissionBlock >
62+ </ PermissionContainer >
63+ ) ;
64+ } ;
65+
3766export const PermissionsSettings = ( ) => {
3867 return (
3968 < PermissionsDataProvider >
4069 < PermissionsFormProvider >
4170 < SectionContainer >
42- { renderPermissionsList . map ( ( { permissionsTitle, payload } ) => (
43- < PermissionContainer key = { permissionsTitle } >
44- < PermissionGroupTitle > { permissionsTitle } </ PermissionGroupTitle >
45- < PermissionBlock >
46- { payload . map ( ( { role, title, tooltip } ) => {
47- return (
48- < PermissionRoleWrapper key = { role } >
49- < RoleDescription
50- permission = { role }
51- description = { title }
52- tooltip = { tooltip }
53- />
54- < AddressList permission = { role } />
55- </ PermissionRoleWrapper >
56- ) ;
57- } ) }
58- </ PermissionBlock >
59- </ PermissionContainer >
71+ { renderPermissionsList . map ( ( section ) => (
72+ < PermissionsSection key = { section . permissionsTitle } { ...section } />
6073 ) ) }
6174 < PermissionsAction />
6275 </ SectionContainer >
0 commit comments