71f0b28a84
* 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
48 lines
1.5 KiB
JavaScript
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
|
|
)
|
|
},
|
|
}
|