import express from "express"; import type { Express } from "express"; import cors from "cors"; import allowSetup from "../middleware/allowSetup"; import authenticate from "../middleware/authenticate"; import errorHandler from "../middleware/errorHandler"; import publicAvailable from "./public"; import setup from "./setup"; import invite from "./invite"; import reset from "./reset"; import auth from "./auth"; import admin from "./admin/index"; import user from "./user"; import detectPWA from "../middleware/detectPWA"; import webapi from "./webapi"; import authenticateAPI from "../middleware/authenticateAPI"; import server from "./server"; import PermissionHelper from "../helpers/permissionHelper"; import preventWebapiAccess from "../middleware/preventWebApiAccess"; export default (app: Express) => { app.set("query parser", "extended"); app.use(express.json()); app.use( express.urlencoded({ extended: true, }) ); app.use(cors()); app.options("*", cors()); app.use(detectPWA); app.use("/api/public", publicAvailable); app.use("/api/setup", preventWebapiAccess, allowSetup, setup); app.use("/api/reset", preventWebapiAccess, reset); app.use("/api/invite", preventWebapiAccess, invite); app.use("/api/auth", preventWebapiAccess, auth); app.use("/api/webapi", authenticateAPI, webapi); app.use(authenticate); app.use("/api/admin", admin); app.use("/api/user", preventWebapiAccess, user); app.use("/api/server", preventWebapiAccess, PermissionHelper.isAdminMiddleware(), server); app.use(errorHandler); };