UserMembershipRouter.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. const UserMembershipMiddleware = require('./UserMembershipMiddleware')
  2. const UserMembershipController = require('./UserMembershipController')
  3. const SubscriptionGroupController = require('../Subscription/SubscriptionGroupController')
  4. const TeamInvitesController = require('../Subscription/TeamInvitesController')
  5. const { RateLimiter } = require('../../infrastructure/RateLimiter')
  6. const RateLimiterMiddleware = require('../Security/RateLimiterMiddleware')
  7. const rateLimiters = {
  8. createTeamInvite: new RateLimiter('create-team-invite', {
  9. points: 200,
  10. duration: 60,
  11. }),
  12. exportTeamCsv: new RateLimiter('export-team-csv', {
  13. points: 30,
  14. duration: 60,
  15. }),
  16. }
  17. module.exports = {
  18. apply(webRouter) {
  19. // group members routes
  20. webRouter.get(
  21. '/manage/groups/:id/members',
  22. UserMembershipMiddleware.requireGroupManagementAccess,
  23. UserMembershipController.manageGroupMembers
  24. )
  25. webRouter.post(
  26. '/manage/groups/:id/invites',
  27. UserMembershipMiddleware.requireGroupManagementAccess,
  28. RateLimiterMiddleware.rateLimit(rateLimiters.createTeamInvite),
  29. TeamInvitesController.createInvite
  30. )
  31. webRouter.post(
  32. '/manage/groups/:id/resendInvite',
  33. UserMembershipMiddleware.requireGroupManagementAccess,
  34. RateLimiterMiddleware.rateLimit(rateLimiters.createTeamInvite),
  35. TeamInvitesController.resendInvite
  36. )
  37. webRouter.delete(
  38. '/manage/groups/:id/user/:user_id',
  39. UserMembershipMiddleware.requireGroupManagementAccess,
  40. SubscriptionGroupController.removeUserFromGroup
  41. )
  42. webRouter.delete(
  43. '/manage/groups/:id/invites/:email',
  44. UserMembershipMiddleware.requireGroupManagementAccess,
  45. TeamInvitesController.revokeInvite
  46. )
  47. webRouter.get(
  48. '/manage/groups/:id/members/export',
  49. UserMembershipMiddleware.requireGroupManagementAccess,
  50. RateLimiterMiddleware.rateLimit(rateLimiters.exportTeamCsv),
  51. UserMembershipController.exportCsv
  52. )
  53. // group managers routes
  54. webRouter.get(
  55. '/manage/groups/:id/managers',
  56. UserMembershipMiddleware.requireGroupManagersManagementAccess,
  57. UserMembershipController.manageGroupManagers
  58. )
  59. webRouter.post(
  60. '/manage/groups/:id/managers',
  61. UserMembershipMiddleware.requireGroupManagersManagementAccess,
  62. UserMembershipController.add
  63. )
  64. webRouter.delete(
  65. '/manage/groups/:id/managers/:userId',
  66. UserMembershipMiddleware.requireGroupManagersManagementAccess,
  67. UserMembershipController.remove
  68. )
  69. // institution members routes
  70. webRouter.get(
  71. '/manage/institutions/:id/managers',
  72. UserMembershipMiddleware.requireInstitutionManagementAccess,
  73. UserMembershipController.manageInstitutionManagers
  74. )
  75. webRouter.post(
  76. '/manage/institutions/:id/managers',
  77. UserMembershipMiddleware.requireInstitutionManagementAccess,
  78. UserMembershipController.add
  79. )
  80. webRouter.delete(
  81. '/manage/institutions/:id/managers/:userId',
  82. UserMembershipMiddleware.requireInstitutionManagementAccess,
  83. UserMembershipController.remove
  84. )
  85. // publisher members routes
  86. webRouter.get(
  87. '/manage/publishers/:id/managers',
  88. UserMembershipMiddleware.requirePublisherManagementAccess,
  89. UserMembershipController.managePublisherManagers
  90. )
  91. webRouter.post(
  92. '/manage/publishers/:id/managers',
  93. UserMembershipMiddleware.requirePublisherManagementAccess,
  94. UserMembershipController.add
  95. )
  96. webRouter.delete(
  97. '/manage/publishers/:id/managers/:userId',
  98. UserMembershipMiddleware.requirePublisherManagementAccess,
  99. UserMembershipController.remove
  100. )
  101. // publisher creation routes
  102. webRouter.get(
  103. '/entities/publisher/create/:id',
  104. UserMembershipMiddleware.requirePublisherCreationAccess,
  105. UserMembershipController.new
  106. )
  107. webRouter.post(
  108. '/entities/publisher/create/:id',
  109. UserMembershipMiddleware.requirePublisherCreationAccess,
  110. UserMembershipController.create
  111. )
  112. // institution creation routes
  113. webRouter.get(
  114. '/entities/institution/create/:id',
  115. UserMembershipMiddleware.requireInstitutionCreationAccess,
  116. UserMembershipController.new
  117. )
  118. webRouter.post(
  119. '/entities/institution/create/:id',
  120. UserMembershipMiddleware.requireInstitutionCreationAccess,
  121. UserMembershipController.create
  122. )
  123. },
  124. }