Files
Verso/services/web/app/src/Features/LinkedFiles/LinkedFilesRouter.mjs
T
Andrew RumbleandCopybot c6c62088cc Migrate Features to ES modules
GitOrigin-RevId: 4e9d3176b4b5a5504afc102e569a27d7788864a3
2024-10-17 08:06:08 +00:00

48 lines
1.5 KiB
JavaScript

import AuthorizationMiddleware from '../Authorization/AuthorizationMiddleware.js'
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
)
},
}