diff --git a/services/web/app/src/Features/UserMembership/UserMembershipMiddleware.js b/services/web/app/src/Features/UserMembership/UserMembershipMiddleware.js index 46651ffbb3..165edc3309 100644 --- a/services/web/app/src/Features/UserMembership/UserMembershipMiddleware.js +++ b/services/web/app/src/Features/UserMembership/UserMembershipMiddleware.js @@ -84,6 +84,29 @@ const UserMembershipMiddleware = { ]), ], + requireGroupSettingsReadAccess: [ + AuthenticationController.requireLogin(), + fetchEntityConfig('groupAdmin'), + fetchEntity(), + requireEntity(), + allowAccessIfAny([ + UserMembershipAuthorization.hasEntityAccess(), + UserMembershipAuthorization.hasStaffAccess('groupManagement'), + ]), + ], + + requireGroupSettingsWriteAccess: [ + AuthenticationController.requireLogin(), + fetchEntityConfig('groupAdmin'), + fetchEntity(), + requireEntity(), + allowAccessIfAny([ + UserMembershipAuthorization.hasEntityAccess(), + UserMembershipAuthorization.hasStaffAccess('groupManagement'), + UserMembershipAuthorization.hasAdminCapability('modify-group-setting'), + ]), + ], + requireInstitutionMetricsAccess: [ AuthenticationController.requireLogin(), fetchEntityConfig('institution'), diff --git a/services/web/frontend/js/utils/meta.ts b/services/web/frontend/js/utils/meta.ts index f94cdf2710..077c91db9a 100644 --- a/services/web/frontend/js/utils/meta.ts +++ b/services/web/frontend/js/utils/meta.ts @@ -143,6 +143,7 @@ export interface Meta { 'ol-hasSplitTestWriteAccess': boolean 'ol-hasSubscription': boolean 'ol-hasTrackChangesFeature': boolean + 'ol-hasWriteAccess': boolean 'ol-hideLinkingWidgets': boolean // CI only 'ol-i18n': { currentLangCode: string } 'ol-inactiveTutorials': string[] diff --git a/services/web/types/admin-capabilities.ts b/services/web/types/admin-capabilities.ts index 99d47b9c60..7de5755c98 100644 --- a/services/web/types/admin-capabilities.ts +++ b/services/web/types/admin-capabilities.ts @@ -5,6 +5,7 @@ export type AdminCapability = | 'create-subscription' | 'modify-feature-override' | 'modify-group' + | 'modify-group-setting' | 'modify-login-status' | 'modify-managed-group' | 'modify-project'