Files
Verso/services/web/app/src/Features/UserMembership/UserMembershipRouter.js
T
Alexandre Bourdin ed40a87cdc [web] Migrate group management to React (#11293)
* Rename manage group entry point

* Migrate group management root page to React

* Add cypress tests for the group management react page

* Fix linting

* Add checkbox labels for screen-readers + remove unused classes

* Await on add/remove members calls

* Display the export CSV link for a full group

* Display error message when group is full

* Sort locales

* Handle the managers management page in React version

* Fix missing type in GroupMemberRow

* Split members and managers React pages

* Build API paths on frontend side + add cypress tests for each page

* Fix linting

* Update unit tests

* Review improvements

* Type API errors

GitOrigin-RevId: d124a9d24cbf33de8aacc5d69e9d46e7bcda93c5
2023-02-07 09:04:18 +00:00

126 lines
4.1 KiB
JavaScript

const UserMembershipMiddleware = require('./UserMembershipMiddleware')
const UserMembershipController = require('./UserMembershipController')
const SubscriptionGroupController = require('../Subscription/SubscriptionGroupController')
const TeamInvitesController = require('../Subscription/TeamInvitesController')
const { RateLimiter } = require('../../infrastructure/RateLimiter')
const RateLimiterMiddleware = require('../Security/RateLimiterMiddleware')
const rateLimiters = {
createTeamInvite: new RateLimiter('create-team-invite', {
points: 200,
duration: 60,
}),
exportTeamCsv: new RateLimiter('export-team-csv', {
points: 30,
duration: 60,
}),
}
module.exports = {
apply(webRouter) {
// group members routes
webRouter.get(
'/manage/groups/:id/members',
UserMembershipMiddleware.requireGroupManagementAccess,
UserMembershipController.manageGroupMembers
)
webRouter.post(
'/manage/groups/:id/invites',
UserMembershipMiddleware.requireGroupManagementAccess,
RateLimiterMiddleware.rateLimit(rateLimiters.createTeamInvite),
TeamInvitesController.createInvite
)
webRouter.delete(
'/manage/groups/:id/user/:user_id',
UserMembershipMiddleware.requireGroupManagementAccess,
SubscriptionGroupController.removeUserFromGroup
)
webRouter.delete(
'/manage/groups/:id/invites/:email',
UserMembershipMiddleware.requireGroupManagementAccess,
TeamInvitesController.revokeInvite
)
webRouter.get(
'/manage/groups/:id/members/export',
UserMembershipMiddleware.requireGroupManagementAccess,
RateLimiterMiddleware.rateLimit(rateLimiters.exportTeamCsv),
UserMembershipController.exportCsv
)
// group managers routes
webRouter.get(
'/manage/groups/:id/managers',
UserMembershipMiddleware.requireGroupManagersManagementAccess,
UserMembershipController.manageGroupManagers
)
webRouter.post(
'/manage/groups/:id/managers',
UserMembershipMiddleware.requireGroupManagersManagementAccess,
UserMembershipController.add
)
webRouter.delete(
'/manage/groups/:id/managers/:userId',
UserMembershipMiddleware.requireGroupManagersManagementAccess,
UserMembershipController.remove
)
// institution members routes
webRouter.get(
'/manage/institutions/:id/managers',
UserMembershipMiddleware.requireInstitutionManagementAccess,
UserMembershipController.manageInstitutionManagers
)
webRouter.post(
'/manage/institutions/:id/managers',
UserMembershipMiddleware.requireInstitutionManagementAccess,
UserMembershipController.add
)
webRouter.delete(
'/manage/institutions/:id/managers/:userId',
UserMembershipMiddleware.requireInstitutionManagementAccess,
UserMembershipController.remove
)
// publisher members routes
webRouter.get(
'/manage/publishers/:id/managers',
UserMembershipMiddleware.requirePublisherManagementAccess,
UserMembershipController.managePublisherManagers
)
webRouter.post(
'/manage/publishers/:id/managers',
UserMembershipMiddleware.requirePublisherManagementAccess,
UserMembershipController.add
)
webRouter.delete(
'/manage/publishers/:id/managers/:userId',
UserMembershipMiddleware.requirePublisherManagementAccess,
UserMembershipController.remove
)
// publisher creation routes
webRouter.get(
'/entities/publisher/create/:id',
UserMembershipMiddleware.requirePublisherCreationAccess,
UserMembershipController.new
)
webRouter.post(
'/entities/publisher/create/:id',
UserMembershipMiddleware.requirePublisherCreationAccess,
UserMembershipController.create
)
// institution creation routes
webRouter.get(
'/entities/institution/create/:id',
UserMembershipMiddleware.requireInstitutionCreationAccess,
UserMembershipController.new
)
webRouter.post(
'/entities/institution/create/:id',
UserMembershipMiddleware.requireInstitutionCreationAccess,
UserMembershipController.create
)
},
}