|
@@ -6,6 +6,7 @@ import AuthenticationController from '../Authentication/AuthenticationController
|
|
|
import AuthorizationMiddleware from '../Authorization/AuthorizationMiddleware.mjs'
|
|
import AuthorizationMiddleware from '../Authorization/AuthorizationMiddleware.mjs'
|
|
|
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
|
|
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
|
|
|
import HistoryController from './HistoryController.mjs'
|
|
import HistoryController from './HistoryController.mjs'
|
|
|
|
|
+import AsyncLocalStorage from '../../infrastructure/AsyncLocalStorage.mjs'
|
|
|
|
|
|
|
|
const rateLimiters = {
|
|
const rateLimiters = {
|
|
|
downloadProjectRevision: new RateLimiter('download-project-revision', {
|
|
downloadProjectRevision: new RateLimiter('download-project-revision', {
|
|
@@ -33,12 +34,14 @@ function apply(webRouter, privateApiRouter) {
|
|
|
webRouter.head(
|
|
webRouter.head(
|
|
|
'/project/:project_id/blob/:hash',
|
|
'/project/:project_id/blob/:hash',
|
|
|
RateLimiterMiddleware.rateLimit(rateLimiters.getProjectBlob),
|
|
RateLimiterMiddleware.rateLimit(rateLimiters.getProjectBlob),
|
|
|
|
|
+ AsyncLocalStorage.middleware,
|
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
|
HistoryController.headBlob
|
|
HistoryController.headBlob
|
|
|
)
|
|
)
|
|
|
webRouter.get(
|
|
webRouter.get(
|
|
|
'/project/:project_id/blob/:hash',
|
|
'/project/:project_id/blob/:hash',
|
|
|
RateLimiterMiddleware.rateLimit(rateLimiters.getProjectBlob),
|
|
RateLimiterMiddleware.rateLimit(rateLimiters.getProjectBlob),
|
|
|
|
|
+ AsyncLocalStorage.middleware,
|
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
|
HistoryController.getBlob
|
|
HistoryController.getBlob
|
|
|
)
|
|
)
|
|
@@ -47,24 +50,28 @@ function apply(webRouter, privateApiRouter) {
|
|
|
|
|
|
|
|
webRouter.get(
|
|
webRouter.get(
|
|
|
'/project/:Project_id/updates',
|
|
'/project/:Project_id/updates',
|
|
|
|
|
+ AsyncLocalStorage.middleware,
|
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
|
HistoryController.proxyToHistoryApiAndInjectUserDetails
|
|
HistoryController.proxyToHistoryApiAndInjectUserDetails
|
|
|
)
|
|
)
|
|
|
webRouter.get(
|
|
webRouter.get(
|
|
|
'/project/:Project_id/doc/:doc_id/diff',
|
|
'/project/:Project_id/doc/:doc_id/diff',
|
|
|
|
|
+ AsyncLocalStorage.middleware,
|
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
|
HistoryController.proxyToHistoryApi
|
|
HistoryController.proxyToHistoryApi
|
|
|
)
|
|
)
|
|
|
webRouter.get(
|
|
webRouter.get(
|
|
|
'/project/:Project_id/diff',
|
|
'/project/:Project_id/diff',
|
|
|
|
|
+ AsyncLocalStorage.middleware,
|
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
|
HistoryController.proxyToHistoryApiAndInjectUserDetails
|
|
HistoryController.proxyToHistoryApiAndInjectUserDetails
|
|
|
)
|
|
)
|
|
|
webRouter.get(
|
|
webRouter.get(
|
|
|
'/project/:Project_id/filetree/diff',
|
|
'/project/:Project_id/filetree/diff',
|
|
|
|
|
+ AsyncLocalStorage.middleware,
|
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
|
HistoryController.proxyToHistoryApi
|
|
HistoryController.proxyToHistoryApi
|
|
@@ -103,6 +110,7 @@ function apply(webRouter, privateApiRouter) {
|
|
|
webRouter.post(
|
|
webRouter.post(
|
|
|
'/project/:Project_id/flush',
|
|
'/project/:Project_id/flush',
|
|
|
RateLimiterMiddleware.rateLimit(rateLimiters.flushHistory),
|
|
RateLimiterMiddleware.rateLimit(rateLimiters.flushHistory),
|
|
|
|
|
+ AsyncLocalStorage.middleware,
|
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
|
HistoryController.proxyToHistoryApi
|
|
HistoryController.proxyToHistoryApi
|
|
@@ -117,6 +125,7 @@ function apply(webRouter, privateApiRouter) {
|
|
|
|
|
|
|
|
webRouter.get(
|
|
webRouter.get(
|
|
|
'/project/:Project_id/labels',
|
|
'/project/:Project_id/labels',
|
|
|
|
|
+ AsyncLocalStorage.middleware,
|
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
|
HistoryController.getLabels
|
|
HistoryController.getLabels
|
|
@@ -136,12 +145,14 @@ function apply(webRouter, privateApiRouter) {
|
|
|
|
|
|
|
|
webRouter.get(
|
|
webRouter.get(
|
|
|
'/project/:project_id/latest/history',
|
|
'/project/:project_id/latest/history',
|
|
|
|
|
+ AsyncLocalStorage.middleware,
|
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
|
HistoryController.getLatestHistory
|
|
HistoryController.getLatestHistory
|
|
|
)
|
|
)
|
|
|
webRouter.get(
|
|
webRouter.get(
|
|
|
'/project/:project_id/changes',
|
|
'/project/:project_id/changes',
|
|
|
|
|
+ AsyncLocalStorage.middleware,
|
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
AuthorizationMiddleware.blockRestrictedUserFromProject,
|
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
AuthorizationMiddleware.ensureUserCanReadProject,
|
|
|
HistoryController.getChanges
|
|
HistoryController.getChanges
|