mirror of
https://github.com/directus/directus.git
synced 2026-01-29 16:28:02 -05:00
93 lines
2.9 KiB
TypeScript
93 lines
2.9 KiB
TypeScript
import express from 'express';
|
|
import bodyParser from 'body-parser';
|
|
import logger from 'express-pino-logger';
|
|
import path from 'path';
|
|
import cors from 'cors';
|
|
import env from './env';
|
|
|
|
import errorHandler from './middleware/error-handler';
|
|
|
|
import extractToken from './middleware/extract-token';
|
|
import authenticate from './middleware/authenticate';
|
|
|
|
import activityRouter from './routes/activity';
|
|
import assetsRouter from './routes/assets';
|
|
import authRouter from './routes/auth';
|
|
import collectionsRouter from './routes/collections';
|
|
import extensionsRouter from './routes/extensions';
|
|
import fieldsRouter from './routes/fields';
|
|
import filesRouter from './routes/files';
|
|
import foldersRouter from './routes/folders';
|
|
import itemsRouter from './routes/items';
|
|
import permissionsRouter from './routes/permissions';
|
|
import presetsRouter from './routes/presets';
|
|
import relationsRouter from './routes/relations';
|
|
import revisionsRouter from './routes/revisions';
|
|
import rolesRouter from './routes/roles';
|
|
import serverRouter from './routes/server';
|
|
import settingsRouter from './routes/settings';
|
|
import usersRouter from './routes/users';
|
|
import utilsRouter from './routes/utils';
|
|
import webhooksRouter from './routes/webhooks';
|
|
|
|
import notFoundHandler from './routes/not-found';
|
|
|
|
const app = express().disable('x-powered-by').set('trust proxy', true);
|
|
|
|
app.use(logger())
|
|
.use(bodyParser.json())
|
|
.use(extractToken)
|
|
.use((req, res, next) => {
|
|
res.setHeader('X-Powered-By', 'Directus');
|
|
next();
|
|
});
|
|
|
|
if (env.CORS_ENABLED === 'true') {
|
|
app.use(
|
|
cors({
|
|
origin: env.CORS_ORIGIN || true,
|
|
methods: env.CORS_METHODS || 'GET,POST,PATCH,DELETE',
|
|
allowedHeaders: env.CORS_ALLOWED_HEADERS,
|
|
exposedHeaders: env.CORS_EXPOSED_HEADERS,
|
|
credentials: env.CORS_CREDENTIALS === 'true' || undefined,
|
|
maxAge: Number(env.CORS_MAX_AGE) || undefined,
|
|
})
|
|
);
|
|
}
|
|
|
|
const adminPath = require.resolve('@directus/app/dist/index.html');
|
|
|
|
app.get('/', (req, res) => res.redirect('/admin/'))
|
|
// the auth endpoints allow you to login/logout etc. It should ignore the authentication check
|
|
.use('/admin', express.static(path.join(adminPath, '..')))
|
|
.use('/admin/*', (req, res) => {
|
|
res.sendFile(adminPath);
|
|
});
|
|
|
|
app.use('/auth', authRouter)
|
|
|
|
.use(authenticate)
|
|
|
|
.use('/activity', activityRouter)
|
|
.use('/assets', assetsRouter)
|
|
.use('/collections', collectionsRouter)
|
|
.use('/extensions', extensionsRouter)
|
|
.use('/fields', fieldsRouter)
|
|
.use('/files', filesRouter)
|
|
.use('/folders', foldersRouter)
|
|
.use('/items', itemsRouter)
|
|
.use('/permissions', permissionsRouter)
|
|
.use('/presets', presetsRouter)
|
|
.use('/relations', relationsRouter)
|
|
.use('/revisions', revisionsRouter)
|
|
.use('/roles', rolesRouter)
|
|
.use('/server/', serverRouter)
|
|
.use('/settings', settingsRouter)
|
|
.use('/users', usersRouter)
|
|
.use('/utils', utilsRouter)
|
|
.use('/webhooks', webhooksRouter);
|
|
|
|
app.use(notFoundHandler).use(errorHandler);
|
|
|
|
export default app;
|