|
|
@@ -12,17 +12,6 @@ const { useAdminCapabilities } = require('../Helpers/AdminAuthorizationHelper')
|
|
|
// set of middleware arrays or functions that checks user access to an entity
|
|
|
// (publisher, institution, group, template, etc.)
|
|
|
const UserMembershipMiddleware = {
|
|
|
- requireTeamMetricsAccess: [
|
|
|
- AuthenticationController.requireLogin(),
|
|
|
- fetchEntityConfig('team'),
|
|
|
- fetchEntity(),
|
|
|
- requireEntity(),
|
|
|
- allowAccessIfAny([
|
|
|
- UserMembershipAuthorization.hasEntityAccess(),
|
|
|
- UserMembershipAuthorization.hasStaffAccess('groupMetrics'),
|
|
|
- ]),
|
|
|
- ],
|
|
|
-
|
|
|
requireGroup: [fetchEntityConfig('group'), fetchEntity(), requireEntity()],
|
|
|
|
|
|
requireGroupAccess: [
|
|
|
@@ -32,28 +21,37 @@ const UserMembershipMiddleware = {
|
|
|
requireEntity(),
|
|
|
],
|
|
|
|
|
|
- requireGroupMemberAccess: [
|
|
|
+ requireEntityAccess: ({ entityName, staffAccess, adminCapability }) => [
|
|
|
AuthenticationController.requireLogin(),
|
|
|
- fetchEntityConfig('groupMember'),
|
|
|
+ fetchEntityConfig(entityName),
|
|
|
fetchEntity(),
|
|
|
requireEntity(),
|
|
|
- allowAccessIfAny([UserMembershipAuthorization.hasEntityAccess()]),
|
|
|
+ allowAccessIfAny(
|
|
|
+ [
|
|
|
+ UserMembershipAuthorization.hasEntityAccess(),
|
|
|
+ staffAccess && UserMembershipAuthorization.hasStaffAccess(staffAccess),
|
|
|
+ adminCapability &&
|
|
|
+ UserMembershipAuthorization.hasAdminCapability(adminCapability),
|
|
|
+ ].filter(Boolean)
|
|
|
+ ),
|
|
|
],
|
|
|
|
|
|
- requireGroupManagementAccess: [
|
|
|
+ requireEntityAccessOrAdminAccess: entityName => [
|
|
|
AuthenticationController.requireLogin(),
|
|
|
- fetchEntityConfig('group'),
|
|
|
+ fetchEntityConfig(entityName),
|
|
|
fetchEntity(),
|
|
|
requireEntity(),
|
|
|
allowAccessIfAny([
|
|
|
UserMembershipAuthorization.hasEntityAccess(),
|
|
|
UserMembershipAuthorization.hasStaffAccess('groupManagement'),
|
|
|
+ // allow to all admins when `adminRolesEnabled` is true
|
|
|
+ UserMembershipAuthorization.hasAnyAdminRole,
|
|
|
]),
|
|
|
],
|
|
|
|
|
|
- requireGroupMemberManagementAccess: [
|
|
|
+ requireGroupMemberManagement: entityName => [
|
|
|
AuthenticationController.requireLogin(),
|
|
|
- fetchEntityConfig('group'),
|
|
|
+ fetchEntityConfig(entityName),
|
|
|
fetchEntity(),
|
|
|
requireEntity(),
|
|
|
useAdminCapabilities,
|
|
|
@@ -64,75 +62,6 @@ const UserMembershipMiddleware = {
|
|
|
]),
|
|
|
],
|
|
|
|
|
|
- requireGroupMetricsAccess: [
|
|
|
- AuthenticationController.requireLogin(),
|
|
|
- fetchEntityConfig('group'),
|
|
|
- fetchEntity(),
|
|
|
- requireEntity(),
|
|
|
- allowAccessIfAny([
|
|
|
- UserMembershipAuthorization.hasEntityAccess(),
|
|
|
- UserMembershipAuthorization.hasStaffAccess('groupMetrics'),
|
|
|
- ]),
|
|
|
- ],
|
|
|
-
|
|
|
- requireGroupManagersManagementAccess: [
|
|
|
- AuthenticationController.requireLogin(),
|
|
|
- fetchEntityConfig('groupManagers'),
|
|
|
- fetchEntity(),
|
|
|
- requireEntity(),
|
|
|
- allowAccessIfAny([
|
|
|
- UserMembershipAuthorization.hasEntityAccess(),
|
|
|
- UserMembershipAuthorization.hasStaffAccess('groupManagement'),
|
|
|
- ]),
|
|
|
- ],
|
|
|
-
|
|
|
- requireGroupManagersWriteAccess: [
|
|
|
- AuthenticationController.requireLogin(),
|
|
|
- fetchEntityConfig('groupManagers'),
|
|
|
- fetchEntity(),
|
|
|
- requireEntity(),
|
|
|
- useAdminCapabilities,
|
|
|
- allowAccessIfAny([
|
|
|
- UserMembershipAuthorization.hasEntityAccess(),
|
|
|
- UserMembershipAuthorization.hasStaffAccess('groupManagement'),
|
|
|
- UserMembershipAuthorization.hasAdminCapability('modify-group-manager'),
|
|
|
- ]),
|
|
|
- ],
|
|
|
-
|
|
|
- requireGroupAdminAccess: [
|
|
|
- AuthenticationController.requireLogin(),
|
|
|
- fetchEntityConfig('groupAdmin'),
|
|
|
- fetchEntity(),
|
|
|
- requireEntity(),
|
|
|
- allowAccessIfAny([
|
|
|
- UserMembershipAuthorization.hasEntityAccess(),
|
|
|
- UserMembershipAuthorization.hasStaffAccess('groupManagement'),
|
|
|
- ]),
|
|
|
- ],
|
|
|
-
|
|
|
- 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'),
|