62 lines
2.5 KiB
TypeScript
62 lines
2.5 KiB
TypeScript
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");
|
|
app.use(express.urlencoded({ extended: true }));
|
|
|
|
// 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/dataTablesSelect.js", express.static(path.resolve(__dirname, "../node_modules/datatables.net-select/js/dataTables.select.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}`);
|
|
});
|