import express from 'express'; import session from 'express-session'; import cookieParser from 'cookie-parser'; import path from 'path'; import authRouter from './routes/auth'; import dashboardRouter from './routes/dashboard'; import apiRouter from './routes/api'; import { env } from '../config/env'; export function createWebServer() { const app = express(); const basePath = env.webBasePath || '/ucp'; const dashboardPath = `${basePath}/dashboard`; const apiPath = `${basePath}/api`; app.use(express.json({ limit: '5mb' })); app.use(cookieParser()); app.use( session({ secret: env.sessionSecret, resave: false, saveUninitialized: false }) ); const mount = (suffix: string) => (basePath ? `${basePath}${suffix}` : suffix); app.use(mount('/auth'), authRouter); app.use(dashboardPath, dashboardRouter); app.use(mount('/api'), apiRouter); // fallback mounts if proxy strips base path if (basePath) { app.use('/api', apiRouter); app.use('/dashboard', dashboardRouter); } // Redirect bare auth calls to the prefixed path when a base path is set if (basePath) { app.use('/auth', (_req, res) => res.redirect(`${basePath}${_req.originalUrl}`)); } // Landing pages app.get('/', (_req, res) => res.redirect(dashboardPath)); app.get(basePath || '/', (_req, res) => { res.send(` Papo Dashboard

Papo Dashboard

Verwalte Tickets, Module und Automod.

Zum Dashboard
`); }); app.use(mount('/static'), express.static(path.join(process.cwd(), 'static'))); return app; }