artemisapi/app.js

74 lines
1.9 KiB
JavaScript
Executable File

const express = require("express");
const cors = require("cors");
const helmet = require("helmet");
const expressSession = require("express-session");
const MySQLStore = require("express-mysql-session")(expressSession);
const app = express();
const nodeEnv = process.env.NODE_ENV;
if (!nodeEnv) {
console.error("No NODE_ENV specified in environment. Terminating.");
process.exit(1);
}
// Let NGINX do its magic.
app.set("trust proxy", "loopback");
app.set("query parser", "simple");
const store = new MySQLStore({
host: process.env.host,
user: process.env.user,
password: process.env.password,
database: process.env.database,
port: process.env.port,
schema: {
tableName: "cozynet_artemisapi_sessions",
columnNames: {
session_id: "session_id",
expires: "expires",
data: "data",
},
},
});
const userSessionMiddleware = expressSession({
name: "ArtemisAPI_SESSION",
secret: process.env.JWT_SECRET,
store,
resave: true,
saveUninitialized: false,
cookie: {
secure: nodeEnv === "production",
sameSite: nodeEnv === "production" ? "strict" : "none",
},
});
if (nodeEnv !== "production" && process.env.CLIENT_DEV_SERVER && process.env.CLIENT_DEV_SERVER.length > 0) {
const clientDevServer = process.env.CLIENT_DEV_SERVER;
app.use(cors({ credentials: true, origin: clientDevServer }));
} else {
app.use(cors({ credentials: false, origin: "*" }));
app.use((req, res, next) => {
res.header("Access-Control-Allow-Credentials", "false");
next();
});
app.use(helmet());
}
app.use(userSessionMiddleware);
const sunGetRoutes = require("./chunithm/13/getRoutes");
const sunPostRoutes = require("./chunithm/13/postRoutes");
app.use(express.json());
// app.use(cors({ credentials: true, origin: "*" }));
app.use("/SDHD", sunGetRoutes);
app.use("/SDHD", sunPostRoutes);
// Starting the server
const PORT = 4000;
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});