Files
payload/src/express/static.ts
2022-08-07 19:00:26 -04:00

36 lines
1.1 KiB
TypeScript

import express from 'express';
import passport from 'passport';
import path from 'path';
import getExecuteStaticAccess from '../auth/getExecuteStaticAccess';
import authenticate from './middleware/authenticate';
import { Payload } from '../index';
import corsHeaders from './middleware/corsHeaders';
function initStatic(ctx: Payload): void {
Object.entries(ctx.collections).forEach(([_, collection]) => {
const { config } = collection;
if (config.upload) {
const router = express.Router();
router.use(corsHeaders(ctx.config));
router.use(passport.initialize());
router.use(authenticate(ctx.config));
router.use(getExecuteStaticAccess(collection));
if (Array.isArray(config.upload?.handlers)) {
router.get('/:filename*', config.upload.handlers);
}
const staticPath = path.resolve(ctx.config.paths.configDir, config.upload.staticDir);
router.use(express.static(staticPath, config.upload.staticOptions || {}));
ctx.express.use(`${config.upload.staticURL}`, router);
}
});
}
export default initStatic;