Files
Verso/services/web/app/src/Features/LinkedFiles/LinkedFilesRouter.mjs
T
Antoine Clausse 71f0b28a84 [web] Convert some Features files to ES modules (part 3) (#28494)
* Rename files to mjs

* Rename test files to mjs

* Update CODEOWNERS

* Update files to ESM

* Update test files to ESM

* Update RestoreManager.test.mjs

* Remove unused `AdminAuthorizationHelper` mock and stub

* Remove unnecessary return

GitOrigin-RevId: 2b9ef126de1d8964afbc6e5641cca36712655866
2025-09-17 08:05:02 +00:00

48 lines
1.5 KiB
JavaScript

import AuthorizationMiddleware from '../Authorization/AuthorizationMiddleware.mjs'
import AuthenticationController from '../Authentication/AuthenticationController.js'
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.js'
import LinkedFilesController from './LinkedFilesController.mjs'
import { validate, Joi } from '../../infrastructure/Validation.js'
const rateLimiters = {
createLinkedFile: new RateLimiter('create-linked-file', {
points: 100,
duration: 60,
}),
refreshLinkedFile: new RateLimiter('refresh-linked-file', {
points: 100,
duration: 60,
}),
}
export default {
apply(webRouter) {
webRouter.post(
'/project/:project_id/linked_file',
AuthenticationController.requireLogin(),
AuthorizationMiddleware.ensureUserCanWriteProjectContent,
RateLimiterMiddleware.rateLimit(rateLimiters.createLinkedFile, {
params: ['project_id'],
}),
validate({
body: {
name: Joi.string().required(),
// TODO: validate the remaining properties
},
}),
LinkedFilesController.createLinkedFile
)
webRouter.post(
'/project/:project_id/linked_file/:file_id/refresh',
AuthenticationController.requireLogin(),
AuthorizationMiddleware.ensureUserCanWriteProjectContent,
RateLimiterMiddleware.rateLimit(rateLimiters.refreshLinkedFile, {
params: ['project_id'],
}),
LinkedFilesController.refreshLinkedFile
)
},
}