@plone/volto
Version:
Volto
40 lines (35 loc) • 949 B
JavaScript
import express from 'express';
import { getAPIResourceWithAuth } from '@plone/volto/helpers/Api/APIResourceWithAuth';
const HEADERS = [
'accept-ranges',
'cache-control',
'content-disposition',
'content-range',
'content-type',
'x-sendfile',
'x-accel-redirect',
'x-robots-tag',
];
function filesMiddlewareFn(req, res, next) {
getAPIResourceWithAuth(req)
.then((resource) => {
// Just forward the headers that we need
HEADERS.forEach((header) => {
if (resource.headers[header]) {
res.set(header, resource.get(header));
}
});
res.status(resource.statusCode);
res.send(resource.body);
})
.catch(next);
}
export default function filesMiddleware() {
const middleware = express.Router();
middleware.all(
['**/@@download/*', '**/@@display-file/*', '**/ics_view'],
filesMiddlewareFn,
);
middleware.id = 'filesResourcesProcessor';
return middleware;
}