@@ -3,6 +3,7 @@ import LaptopIcon from "@surfnet/sds/icons/illustrative-icons/laptop.svg";
33import HierarchyIcon from "@surfnet/sds/icons/illustrative-icons/hierarchy.svg" ;
44import LaptopFloatIcon from "@surfnet/sds/icons/illustrative-icons/laptop-1.svg" ;
55import UserIcon from "@surfnet/sds/icons/functional-icons/id-2.svg" ;
6+ import PolicyIcon from "@surfnet/sds/icons/functional-icons/lock.svg" ;
67import ScreenIcon from "@surfnet/sds/icons/illustrative-icons/screen.svg" ;
78import HomeIcon from "@surfnet/sds/icons/illustrative-icons/home.svg" ;
89import ConnectedIcon from "@surfnet/sds/icons/illustrative-icons/connected.svg" ;
@@ -18,16 +19,20 @@ export const mainMenuItems = {
1819 idp : "idp" ,
1920 yourApps : "yourApps" ,
2021 catalogue : "catalogue" ,
22+ policies : "policies" ,
2123 accessibleApps : "accessibleApps" ,
2224 invite : "invite" ,
2325 sram : "sram" ,
2426 serviceDesk : "serviceDesk" ,
2527 feedback : "feedback"
2628}
2729
28- const doMenuItemsForUser = ( user , currentOrganization ) => {
30+ const doMenuItemsForUser = ( user , currentOrganization , feedbackWidgetEnabled = useAppStore . getState ( ) . config . feedbackWidgetEnabled ) => {
2931 //Every user has access to the home, catalogue and help menu items
3032 const newMenuItems = [ mainMenuItems . home , mainMenuItems . catalogue , mainMenuItems . serviceDesk ] ;
33+ if ( ! feedbackWidgetEnabled ) {
34+ newMenuItems . push ( mainMenuItems . feedback ) ;
35+ }
3136 const noOrganizationMemberships = isEmpty ( user . organizationMemberships ) ;
3237 if ( noOrganizationMemberships ) {
3338 return newMenuItems ;
@@ -42,16 +47,22 @@ const doMenuItemsForUser = (user, currentOrganization) => {
4247 if ( onlyGuest ) {
4348 return newMenuItems ;
4449 }
45- const isMemberOrAdmin = user . organizationMemberships
46- . some ( m => [ authorities . MEMBER , authorities . ADMIN ] . includes ( m . authority ) &&
50+ const isMember = user . organizationMemberships
51+ . some ( m => authorities . MEMBER === m . authority &&
52+ m . organization . id === currentOrganization . id ) ;
53+ const isAdmin = user . organizationMemberships
54+ . some ( m => authorities . ADMIN === m . authority &&
4755 m . organization . id === currentOrganization . id ) ;
4856
49- if ( isMemberOrAdmin ) {
57+ if ( isMember || isAdmin ) {
5058 newMenuItems . push ( mainMenuItems . users ) ;
5159 }
5260 if ( ! user . externalUser ) {
5361 newMenuItems . push ( mainMenuItems . accessibleApps , mainMenuItems . idp , mainMenuItems . invite , mainMenuItems . sram ) ;
5462 }
63+ if ( ( isAdmin || user . superUser ) && ! isEmpty ( currentOrganization . manageIdentifier ) ) {
64+ newMenuItems . push ( mainMenuItems . policies ) ;
65+ }
5566 return newMenuItems ;
5667}
5768
@@ -122,6 +133,11 @@ export const allMenuGroups = [
122133 path : "/users/organizationId" ,
123134 Logo : UserIcon
124135 } ,
136+ {
137+ name : mainMenuItems . policies ,
138+ path : "/policies/overview" ,
139+ Logo : PolicyIcon
140+ } ,
125141 ]
126142 } ,
127143 {
0 commit comments