UNPKG

synt_backend

Version:

Synt light-weight node backend service

125 lines (108 loc) 4.05 kB
import { overrideConsole } from "./helpers/debug"; //overrideConsole(); const express = require("express"); const app = express(); const jsonWebToken = require("./helpers/jwt"); import { i18next } from "./helpers/i18n"; const cors = require("cors"); const middleware = require("i18next-http-middleware"); // env import "dotenv/config"; import { initializeReminderJobs } from "./database/reminders"; const port = process.env.PORT; // cross domain requests allow /* { origin: "https://synt.be", methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"], allowedHeaders: ["Content-Type", "Authorization"], credentials: true, } */ app.use(cors()); // required to handle post requests app.use(express.urlencoded({ extended: true })); app.use(express.json()); app.use(middleware.handle(i18next)); // Add headers app.use(function (req, res, next) { // Website you wish to allow to connect res.setHeader("Access-Control-Allow-Origin", "*"); // Request methods you wish to allow res.setHeader( "Access-Control-Allow-Methods", "GET, POST, OPTIONS, PUT, PATCH, DELETE" ); // Request headers you wish to allow res.setHeader( "Access-Control-Allow-Headers", "X-Requested-With,content-type" ); // Set to true if you need the website to include cookies in the requests sent // to the API (e.g. in case you use sessions) res.setHeader("Access-Control-Allow-Credentials", true); // Pass to next layer of middleware next(); }); // use JWT auth to secure the api app.use(jsonWebToken()); // eslint-disable-next-line no-unused-vars app.use(function (err, req, res, next) { if (err.name === "UnauthorizedError") { return res.status(403).send({ success: false, message: "No token provided.", }); } }); // Add versioning /api/v1/... when api becomes public (to customers/clients) // routes app.use("/health", require("./controllers/health")); app.use("/api/public", require("./controllers/public")); app.use("/api/users", require("./controllers/users")); app.use("/api/vmes", require("./controllers/vmes")); app.use("/api/definitions", require("./controllers/definitions")); app.use("/api/companies", require("./controllers/companies")); app.use("/api/lots", require("./controllers/lots")); app.use("/api/suppliers", require("./controllers/suppliers")); app.use("/api/meetings", require("./controllers/meetings")); app.use("/api/requests", require("./controllers/requests")); app.use("/api/request/change", require("./controllers/changeRequests")); app.use("/api/incidents", require("./controllers/incidents")); app.use("/api/uploads", require("./controllers/uploads")); app.use("/api/documents", require("./controllers/documents")); app.use("/api/meetingitems", require("./controllers/meetingitems")); app.use("/api/accounting", require("./controllers/accounting")); app.use("/api/websocket", require("./controllers/websocket")); app.use("/api/distributionkeys", require("./controllers/distributionkeys")); app.use("/api/sales", require("./controllers/sales")); app.use("/api/notifications", require("./controllers/notifications")); app.use("/api/banking", require("./controllers/banking")); app.use("/api/webhooks", require("./controllers/webhooks")); app.use("/api/test", require("./controllers/test")); app.use("/api/reminders", require("./controllers/reminders")); app.use("/api/defaultReminders", require("./controllers/defaultReminders")); /* // https const https = require("https"); const fs = require("fs"); const options = { key: fs.readFileSync("localhost-key.pem", "utf-8"), cert: fs.readFileSync("localhost.pem", "utf-8"), }; var server = https.createServer(options, app); */ // http const http = require("http"); var server = http.createServer(app); console.log("Starting to connect"); server.listen(port, () => { console.log(`Synt app running on http://localhost:${port}`); initializeReminderJobs(); }); const io = require("socket.io")(server); io.on("connection", (socketServer) => { socketServer.on("npmStop", () => { process.exit(0); }); });