|
@@ -35,7 +35,10 @@ const PasswordResetRouter = require('./Features/PasswordReset/PasswordResetRoute
|
|
|
const StaticPagesRouter = require('./Features/StaticPages/StaticPagesRouter')
|
|
const StaticPagesRouter = require('./Features/StaticPages/StaticPagesRouter')
|
|
|
const ChatController = require('./Features/Chat/ChatController')
|
|
const ChatController = require('./Features/Chat/ChatController')
|
|
|
const Modules = require('./infrastructure/Modules')
|
|
const Modules = require('./infrastructure/Modules')
|
|
|
-const { RateLimiter } = require('./infrastructure/RateLimiter')
|
|
|
|
|
|
|
+const {
|
|
|
|
|
+ RateLimiter,
|
|
|
|
|
+ openProjectRateLimiter,
|
|
|
|
|
+} = require('./infrastructure/RateLimiter')
|
|
|
const RateLimiterMiddleware = require('./Features/Security/RateLimiterMiddleware')
|
|
const RateLimiterMiddleware = require('./Features/Security/RateLimiterMiddleware')
|
|
|
const InactiveProjectController = require('./Features/InactiveData/InactiveProjectController')
|
|
const InactiveProjectController = require('./Features/InactiveData/InactiveProjectController')
|
|
|
const ContactRouter = require('./Features/Contacts/ContactRouter')
|
|
const ContactRouter = require('./Features/Contacts/ContactRouter')
|
|
@@ -68,8 +71,6 @@ const { plainTextResponse } = require('./infrastructure/Response')
|
|
|
const PublicAccessLevels = require('./Features/Authorization/PublicAccessLevels')
|
|
const PublicAccessLevels = require('./Features/Authorization/PublicAccessLevels')
|
|
|
const UserContentDomainController = require('./Features/UserContentDomainCheck/UserContentDomainController')
|
|
const UserContentDomainController = require('./Features/UserContentDomainCheck/UserContentDomainController')
|
|
|
|
|
|
|
|
-module.exports = { initialize }
|
|
|
|
|
-
|
|
|
|
|
const rateLimiters = {
|
|
const rateLimiters = {
|
|
|
addEmail: new RateLimiter('add-email', {
|
|
addEmail: new RateLimiter('add-email', {
|
|
|
points: 10,
|
|
points: 10,
|
|
@@ -166,10 +167,6 @@ const rateLimiters = {
|
|
|
points: 30,
|
|
points: 30,
|
|
|
duration: 60,
|
|
duration: 60,
|
|
|
}),
|
|
}),
|
|
|
- openProject: new RateLimiter('open-project', {
|
|
|
|
|
- points: 15,
|
|
|
|
|
- duration: 60,
|
|
|
|
|
- }),
|
|
|
|
|
readAndWriteToken: new RateLimiter('read-and-write-token', {
|
|
readAndWriteToken: new RateLimiter('read-and-write-token', {
|
|
|
points: 15,
|
|
points: 15,
|
|
|
duration: 60,
|
|
duration: 60,
|
|
@@ -206,6 +203,17 @@ const rateLimiters = {
|
|
|
points: 10,
|
|
points: 10,
|
|
|
duration: 60,
|
|
duration: 60,
|
|
|
}),
|
|
}),
|
|
|
|
|
+ userContentDomainAccessCheckResult: new RateLimiter(
|
|
|
|
|
+ 'user-content-domain-a-c-r',
|
|
|
|
|
+ {
|
|
|
|
|
+ points: 15,
|
|
|
|
|
+ duration: 60,
|
|
|
|
|
+ }
|
|
|
|
|
+ ),
|
|
|
|
|
+ userContentDomainFallbackUsage: new RateLimiter('user-content-fb-u', {
|
|
|
|
|
+ points: 15,
|
|
|
|
|
+ duration: 60,
|
|
|
|
|
+ }),
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
@@ -231,7 +239,7 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/login/can-skip-captcha',
|
|
'/login/can-skip-captcha',
|
|
|
// Keep in sync with the overleaf-login options.
|
|
// Keep in sync with the overleaf-login options.
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.canSkipCaptcha),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.canSkipCaptcha),
|
|
|
CaptchaMiddleware.canSkipCaptcha
|
|
CaptchaMiddleware.canSkipCaptcha
|
|
|
)
|
|
)
|
|
|
|
|
|
|
@@ -310,7 +318,7 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/user/password/update',
|
|
'/user/password/update',
|
|
|
AuthenticationController.requireLogin(),
|
|
AuthenticationController.requireLogin(),
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.changePassword),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.changePassword),
|
|
|
UserController.changePassword
|
|
UserController.changePassword
|
|
|
)
|
|
)
|
|
|
webRouter.get(
|
|
webRouter.get(
|
|
@@ -322,13 +330,13 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
webRouter.get('/user/emails/confirm', UserEmailsController.showConfirm)
|
|
webRouter.get('/user/emails/confirm', UserEmailsController.showConfirm)
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/user/emails/confirm',
|
|
'/user/emails/confirm',
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.confirmEmail),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.confirmEmail),
|
|
|
UserEmailsController.confirm
|
|
UserEmailsController.confirm
|
|
|
)
|
|
)
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/user/emails/resend_confirmation',
|
|
'/user/emails/resend_confirmation',
|
|
|
AuthenticationController.requireLogin(),
|
|
AuthenticationController.requireLogin(),
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.resendConfirmation),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.resendConfirmation),
|
|
|
UserEmailsController.resendConfirmation
|
|
UserEmailsController.resendConfirmation
|
|
|
)
|
|
)
|
|
|
|
|
|
|
@@ -348,13 +356,13 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/user/emails',
|
|
'/user/emails',
|
|
|
AuthenticationController.requireLogin(),
|
|
AuthenticationController.requireLogin(),
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.addEmail),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.addEmail),
|
|
|
UserEmailsController.add
|
|
UserEmailsController.add
|
|
|
)
|
|
)
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/user/emails/delete',
|
|
'/user/emails/delete',
|
|
|
AuthenticationController.requireLogin(),
|
|
AuthenticationController.requireLogin(),
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.deleteEmail),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.deleteEmail),
|
|
|
UserEmailsController.remove
|
|
UserEmailsController.remove
|
|
|
)
|
|
)
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
@@ -365,7 +373,7 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/user/emails/endorse',
|
|
'/user/emails/endorse',
|
|
|
AuthenticationController.requireLogin(),
|
|
AuthenticationController.requireLogin(),
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.endorseEmail),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.endorseEmail),
|
|
|
UserEmailsController.endorse
|
|
UserEmailsController.endorse
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|
|
@@ -408,7 +416,7 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
|
|
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/user/delete',
|
|
'/user/delete',
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.deleteUser),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.deleteUser),
|
|
|
AuthenticationController.requireLogin(),
|
|
AuthenticationController.requireLogin(),
|
|
|
UserController.tryDeleteUser
|
|
UserController.tryDeleteUser
|
|
|
)
|
|
)
|
|
@@ -451,19 +459,19 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
webRouter.get(
|
|
webRouter.get(
|
|
|
'/project',
|
|
'/project',
|
|
|
AuthenticationController.requireLogin(),
|
|
AuthenticationController.requireLogin(),
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.openDashboard),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.openDashboard),
|
|
|
ProjectController.projectListPage
|
|
ProjectController.projectListPage
|
|
|
)
|
|
)
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/project/new',
|
|
'/project/new',
|
|
|
AuthenticationController.requireLogin(),
|
|
AuthenticationController.requireLogin(),
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.createProject),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.createProject),
|
|
|
ProjectController.newProject
|
|
ProjectController.newProject
|
|
|
)
|
|
)
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/api/project',
|
|
'/api/project',
|
|
|
AuthenticationController.requireLogin(),
|
|
AuthenticationController.requireLogin(),
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.getProjects),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.getProjects),
|
|
|
ProjectListController.getProjectsJson
|
|
ProjectListController.getProjectsJson
|
|
|
)
|
|
)
|
|
|
|
|
|
|
@@ -475,7 +483,7 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
]) {
|
|
]) {
|
|
|
webRouter.get(
|
|
webRouter.get(
|
|
|
route,
|
|
route,
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.openProject, {
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(openProjectRateLimiter, {
|
|
|
params: ['Project_id'],
|
|
params: ['Project_id'],
|
|
|
}),
|
|
}),
|
|
|
AuthenticationController.validateUserSession(),
|
|
AuthenticationController.validateUserSession(),
|
|
@@ -514,7 +522,7 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
|
|
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/project/:Project_id/compile',
|
|
'/project/:Project_id/compile',
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.compileProjectHttp, {
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.compileProjectHttp, {
|
|
|
params: ['Project_id'],
|
|
params: ['Project_id'],
|
|
|
}),
|
|
}),
|
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
@@ -562,7 +570,7 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
// Align with limits defined in CompileController.downloadPdf
|
|
// Align with limits defined in CompileController.downloadPdf
|
|
|
- const rateLimiterMiddlewareOutputFiles = RateLimiterMiddleware.rateLimitV2(
|
|
|
|
|
|
|
+ const rateLimiterMiddlewareOutputFiles = RateLimiterMiddleware.rateLimit(
|
|
|
rateLimiters.miscOutputDownload,
|
|
rateLimiters.miscOutputDownload,
|
|
|
{ params: ['Project_id'] }
|
|
{ params: ['Project_id'] }
|
|
|
)
|
|
)
|
|
@@ -753,7 +761,7 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
)
|
|
)
|
|
|
webRouter.get(
|
|
webRouter.get(
|
|
|
'/project/:project_id/version/:version/zip',
|
|
'/project/:project_id/version/:version/zip',
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.downloadProjectRevision),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.downloadProjectRevision),
|
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
|
HistoryController.downloadZipOfVersion
|
|
HistoryController.downloadZipOfVersion
|
|
@@ -805,7 +813,7 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
|
|
|
|
|
webRouter.get(
|
|
webRouter.get(
|
|
|
'/Project/:Project_id/download/zip',
|
|
'/Project/:Project_id/download/zip',
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.zipDownload, {
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.zipDownload, {
|
|
|
params: ['Project_id'],
|
|
params: ['Project_id'],
|
|
|
}),
|
|
}),
|
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
@@ -814,7 +822,7 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
webRouter.get(
|
|
webRouter.get(
|
|
|
'/project/download/zip',
|
|
'/project/download/zip',
|
|
|
AuthenticationController.requireLogin(),
|
|
AuthenticationController.requireLogin(),
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.multipleProjectsZipDownload),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.multipleProjectsZipDownload),
|
|
|
AuthorizationMiddleware.ensureUserCanReadMultipleProjects,
|
|
AuthorizationMiddleware.ensureUserCanReadMultipleProjects,
|
|
|
ProjectDownloadsController.downloadMultipleProjects
|
|
ProjectDownloadsController.downloadMultipleProjects
|
|
|
)
|
|
)
|
|
@@ -873,7 +881,7 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/tag',
|
|
'/tag',
|
|
|
AuthenticationController.requireLogin(),
|
|
AuthenticationController.requireLogin(),
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.createTag),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.createTag),
|
|
|
validate({
|
|
validate({
|
|
|
body: Joi.object({
|
|
body: Joi.object({
|
|
|
name: Joi.string().required(),
|
|
name: Joi.string().required(),
|
|
@@ -884,7 +892,7 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/tag/:tagId/rename',
|
|
'/tag/:tagId/rename',
|
|
|
AuthenticationController.requireLogin(),
|
|
AuthenticationController.requireLogin(),
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.renameTag),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.renameTag),
|
|
|
validate({
|
|
validate({
|
|
|
body: Joi.object({
|
|
body: Joi.object({
|
|
|
name: Joi.string().required(),
|
|
name: Joi.string().required(),
|
|
@@ -895,19 +903,19 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
webRouter.delete(
|
|
webRouter.delete(
|
|
|
'/tag/:tagId',
|
|
'/tag/:tagId',
|
|
|
AuthenticationController.requireLogin(),
|
|
AuthenticationController.requireLogin(),
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.deleteTag),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.deleteTag),
|
|
|
TagsController.deleteTag
|
|
TagsController.deleteTag
|
|
|
)
|
|
)
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/tag/:tagId/project/:projectId',
|
|
'/tag/:tagId/project/:projectId',
|
|
|
AuthenticationController.requireLogin(),
|
|
AuthenticationController.requireLogin(),
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.addProjectToTag),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.addProjectToTag),
|
|
|
TagsController.addProjectToTag
|
|
TagsController.addProjectToTag
|
|
|
)
|
|
)
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/tag/:tagId/projects',
|
|
'/tag/:tagId/projects',
|
|
|
AuthenticationController.requireLogin(),
|
|
AuthenticationController.requireLogin(),
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.addProjectsToTag),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.addProjectsToTag),
|
|
|
validate({
|
|
validate({
|
|
|
body: Joi.object({
|
|
body: Joi.object({
|
|
|
projectIds: Joi.array().items(Joi.string()).required(),
|
|
projectIds: Joi.array().items(Joi.string()).required(),
|
|
@@ -918,13 +926,13 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
webRouter.delete(
|
|
webRouter.delete(
|
|
|
'/tag/:tagId/project/:projectId',
|
|
'/tag/:tagId/project/:projectId',
|
|
|
AuthenticationController.requireLogin(),
|
|
AuthenticationController.requireLogin(),
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.removeProjectFromTag),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.removeProjectFromTag),
|
|
|
TagsController.removeProjectFromTag
|
|
TagsController.removeProjectFromTag
|
|
|
)
|
|
)
|
|
|
webRouter.delete(
|
|
webRouter.delete(
|
|
|
'/tag/:tagId/projects',
|
|
'/tag/:tagId/projects',
|
|
|
AuthenticationController.requireLogin(),
|
|
AuthenticationController.requireLogin(),
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.removeProjectsFromTag),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.removeProjectsFromTag),
|
|
|
validate({
|
|
validate({
|
|
|
body: Joi.object({
|
|
body: Joi.object({
|
|
|
projectIds: Joi.array().items(Joi.string()).required(),
|
|
projectIds: Joi.array().items(Joi.string()).required(),
|
|
@@ -1083,20 +1091,20 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
'/project/:project_id/messages',
|
|
'/project/:project_id/messages',
|
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.sendChatMessage),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.sendChatMessage),
|
|
|
ChatController.sendMessage
|
|
ChatController.sendMessage
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/project/:Project_id/references/index',
|
|
'/project/:Project_id/references/index',
|
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.indexProjectReferences),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.indexProjectReferences),
|
|
|
ReferencesController.index
|
|
ReferencesController.index
|
|
|
)
|
|
)
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/project/:Project_id/references/indexAll',
|
|
'/project/:Project_id/references/indexAll',
|
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.indexAllProjectReferences),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.indexAllProjectReferences),
|
|
|
ReferencesController.indexAll
|
|
ReferencesController.indexAll
|
|
|
)
|
|
)
|
|
|
|
|
|
|
@@ -1141,7 +1149,7 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
)
|
|
)
|
|
|
publicApiRouter.post(
|
|
publicApiRouter.post(
|
|
|
'/api/institutions/confirm_university_domain',
|
|
'/api/institutions/confirm_university_domain',
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.confirmUniversityDomain),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.confirmUniversityDomain),
|
|
|
AuthenticationController.requirePrivateApiAuth(),
|
|
AuthenticationController.requirePrivateApiAuth(),
|
|
|
InstitutionsController.confirmDomain
|
|
InstitutionsController.confirmDomain
|
|
|
)
|
|
)
|
|
@@ -1260,7 +1268,7 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
|
|
|
|
|
webRouter.get(
|
|
webRouter.get(
|
|
|
'/status/compiler/:Project_id',
|
|
'/status/compiler/:Project_id',
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.statusCompiler),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.statusCompiler),
|
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
|
function (req, res) {
|
|
function (req, res) {
|
|
|
const projectId = req.params.Project_id
|
|
const projectId = req.params.Project_id
|
|
@@ -1336,26 +1344,22 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
succeeded: Joi.number().min(0).max(6),
|
|
succeeded: Joi.number().min(0).max(6),
|
|
|
}),
|
|
}),
|
|
|
}),
|
|
}),
|
|
|
- RateLimiterMiddleware.rateLimit({
|
|
|
|
|
- endpointName: 'user-content-domain-a-c-r',
|
|
|
|
|
- maxRequests: 15,
|
|
|
|
|
- timeInterval: 60,
|
|
|
|
|
- }),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(
|
|
|
|
|
+ rateLimiters.userContentDomainAccessCheckResult
|
|
|
|
|
+ ),
|
|
|
UserContentDomainController.recordCheckResult
|
|
UserContentDomainController.recordCheckResult
|
|
|
)
|
|
)
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/record-user-content-domain-fallback-usage',
|
|
'/record-user-content-domain-fallback-usage',
|
|
|
- RateLimiterMiddleware.rateLimit({
|
|
|
|
|
- endpointName: 'user-content-domain-fb-u',
|
|
|
|
|
- maxRequests: 15,
|
|
|
|
|
- timeInterval: 60,
|
|
|
|
|
- }),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(
|
|
|
|
|
+ rateLimiters.userContentDomainFallbackUsage
|
|
|
|
|
+ ),
|
|
|
UserContentDomainController.recordFallbackUsage
|
|
UserContentDomainController.recordFallbackUsage
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
webRouter.get(
|
|
webRouter.get(
|
|
|
`/read/:token(${TokenAccessController.READ_ONLY_TOKEN_PATTERN})`,
|
|
`/read/:token(${TokenAccessController.READ_ONLY_TOKEN_PATTERN})`,
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.readOnlyToken),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.readOnlyToken),
|
|
|
AnalyticsRegistrationSourceMiddleware.setSource(
|
|
AnalyticsRegistrationSourceMiddleware.setSource(
|
|
|
'collaboration',
|
|
'collaboration',
|
|
|
'link-sharing'
|
|
'link-sharing'
|
|
@@ -1366,7 +1370,7 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
|
|
|
|
|
webRouter.get(
|
|
webRouter.get(
|
|
|
`/:token(${TokenAccessController.READ_AND_WRITE_TOKEN_PATTERN})`,
|
|
`/:token(${TokenAccessController.READ_AND_WRITE_TOKEN_PATTERN})`,
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.readAndWriteToken),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.readAndWriteToken),
|
|
|
AnalyticsRegistrationSourceMiddleware.setSource(
|
|
AnalyticsRegistrationSourceMiddleware.setSource(
|
|
|
'collaboration',
|
|
'collaboration',
|
|
|
'link-sharing'
|
|
'link-sharing'
|
|
@@ -1377,13 +1381,13 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
|
|
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
`/:token(${TokenAccessController.READ_AND_WRITE_TOKEN_PATTERN})/grant`,
|
|
`/:token(${TokenAccessController.READ_AND_WRITE_TOKEN_PATTERN})/grant`,
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.grantTokenAccessReadWrite),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.grantTokenAccessReadWrite),
|
|
|
TokenAccessController.grantTokenAccessReadAndWrite
|
|
TokenAccessController.grantTokenAccessReadAndWrite
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
`/read/:token(${TokenAccessController.READ_ONLY_TOKEN_PATTERN})/grant`,
|
|
`/read/:token(${TokenAccessController.READ_ONLY_TOKEN_PATTERN})/grant`,
|
|
|
- RateLimiterMiddleware.rateLimitV2(rateLimiters.grantTokenAccessReadOnly),
|
|
|
|
|
|
|
+ RateLimiterMiddleware.rateLimit(rateLimiters.grantTokenAccessReadOnly),
|
|
|
TokenAccessController.grantTokenAccessReadOnly
|
|
TokenAccessController.grantTokenAccessReadOnly
|
|
|
)
|
|
)
|
|
|
|
|
|
|
@@ -1391,3 +1395,5 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
|
|
|
|
|
|
|
webRouter.get('*', ErrorController.notFound)
|
|
webRouter.get('*', ErrorController.notFound)
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+module.exports = { initialize, rateLimiters }
|