36 lines
1.1 KiB
TypeScript
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;
|