import path from "path"; import express from "express"; import engine from "ejs-mate"; import passport from "passport"; import session from "express-session"; import flash from "connect-flash"; import dotenv from "dotenv"; dotenv.config(); import "@bot/bot"; import { setupPassport } from "@server/controllers/auth.web.controller"; import { attachUser } from "@server/middleware/attachUser"; import { flashMiddleware } from "@server/middleware/flash"; import { ensureAuthenticated } from "@server/middleware/authenticated"; // import routers & middleware import { attachGuilds } from "@server/middleware/attachGuilds"; import homeWebRouter from "@server/routes/home.web.routes"; import guildApiRouter from "@server/routes/guild.api.routes"; import guildWebRouter from "@server/routes/guild.web.routes"; import authWebRouter from "@server/routes/auth.web.routes"; const app = express(); app.engine("ejs", engine); app.set("views", path.resolve(__dirname, "client/views")); app.set("view engine", "ejs"); // Public files, including 3rd party resources (foreign) app.use("/static", express.static(path.resolve(__dirname, "client/public"))); app.use("/static/foreign/preline.js", express.static(path.resolve(__dirname, "../node_modules/preline/dist/preline.js"))); app.use("/static/foreign/jquery.js", express.static(path.resolve(__dirname, "../node_modules/jquery/dist/jquery.min.js"))); app.use("/static/foreign/dataTables.js", express.static(path.resolve(__dirname, "../node_modules/datatables.net/js/dataTables.min.js"))); app.use("/static/foreign/popper.js", express.static(path.resolve(__dirname, "../node_modules/@popperjs/core/dist/umd/popper.min.js"))); // User authentication & sessions app.use(session({ secret: "unsecure-development-secret", resave: true, saveUninitialized: true })); setupPassport(passport); app.use(passport.initialize()); app.use(passport.session()); app.use(flash()); app.use(flashMiddleware); // register routers & middleware app.use("/auth", authWebRouter); app.use("/guild", ensureAuthenticated, attachUser, attachGuilds, guildWebRouter, guildApiRouter); app.use("/", ensureAuthenticated, attachUser, attachGuilds, homeWebRouter); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server is listening on http://localhost:${PORT}`); });