07c827e9fd
[web] last infrastructure conversions GitOrigin-RevId: ad1aff9b7df0610ed0303157d9e2c8032f32c02b
41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
import AuthorizationMiddleware from '../Authorization/AuthorizationMiddleware.mjs'
|
|
import AuthenticationController from '../Authentication/AuthenticationController.mjs'
|
|
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
|
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
|
|
import LinkedFilesController from './LinkedFilesController.mjs'
|
|
|
|
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'],
|
|
}),
|
|
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
|
|
)
|
|
},
|
|
}
|