UNPKG

5.76 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3/**
4 * Module dependencies.
5 */
6const express = require("express");
7const compression = require("compression"); // compresses requests
8const session = require("express-session");
9// import * as cookieSession from "cookie-session";
10const bodyParser = require("body-parser");
11const errorHandler = require("errorhandler");
12const dotenv = require("dotenv");
13const mongo = require("connect-mongo");
14const path = require("path");
15const mongoose = require("mongoose");
16const passport = require("passport");
17const cors = require("cors");
18const expressValidator = require("express-validator");
19const MongoStore = mongo(session);
20/**
21 * Load environment variables from .env file, where API keys and passwords are configured.
22 */
23dotenv.config({ path: ".env" });
24// import * as admin from "firebase-admin";
25/**
26 * Models
27 */
28require("./models/form.model");
29require("./models/bpmn.model");
30/**
31 * Controllers (route handlers).
32 */
33const homeController = require("./controllers/home");
34const userController = require("./controllers/user.controller");
35const configController = require("./controllers/config.controller");
36const formController = require("./controllers/form.controller");
37const bpmnController = require("./controllers/bpmn.controller");
38const diagramController = require("./controllers/diagram.controller");
39// import * as apiController from "./controllers/api";
40const fakeController = require("./controllers/fake.controller");
41const dataController = require("./controllers/data-provider.controller");
42const eventController = require("./controllers/event.controller");
43const sourceController = require("./controllers/source.controller");
44/**
45 * API keys and Passport configuration.
46 */
47const passportConfig = require("./config/passport");
48/**
49 * Create Express server.
50 */
51const app = express();
52/**
53 * Connect to MongoDB.
54 */
55// mongoose.Promise = global.Promise;
56mongoose.connect(process.env.MONGODB_URI || process.env.MONGOLAB_URI);
57mongoose.connection.on("error", () => {
58 console.log("MongoDB connection error. Please make sure MongoDB is running.");
59 process.exit();
60});
61/**
62 * Express configuration.
63 */
64app.set("port", process.env.PORT || 3000);
65app.use(compression());
66app.use(bodyParser.json());
67app.use(bodyParser.urlencoded({ extended: true }));
68app.use(expressValidator());
69const originsWhitelist = [process.env.TEST_SERVER_ADDRESS, process.env.SERVER_ADDRESS];
70const corsOptions = {
71 origin: function (origin, callback) {
72 const isWhitelisted = originsWhitelist.indexOf(origin) !== -1;
73 callback(undefined, isWhitelisted);
74 },
75 credentials: true
76};
77app.use(cors(corsOptions));
78app.use(session({
79 resave: true,
80 saveUninitialized: true,
81 secret: process.env.SESSION_SECRET,
82 store: new MongoStore({
83 url: process.env.MONGODB_URI || process.env.MONGOLAB_URI,
84 autoReconnect: true
85 })
86}));
87// app.use(cookieSession({
88// name: "session",
89// keys: ["key1"],
90// maxAge: 24 * 60 * 60 * 1000
91// }));
92app.use(passport.initialize());
93app.use(passport.session());
94app.use((req, res, next) => {
95 res.locals.user = req.user;
96 next();
97});
98app.use((req, res, next) => {
99 // After successful login, redirect back to the intended page
100 if (!req.user &&
101 req.path !== "/api/user/signin" &&
102 req.path !== "/signup" &&
103 !req.path.match(/^\/auth/) &&
104 !req.path.match(/\./)) {
105 req.session.returnTo = req.path;
106 }
107 else if (req.user && req.path == "/account") {
108 req.session.returnTo = req.path;
109 }
110 next();
111});
112app.use(express.static(path.join(__dirname, "../src"), { maxAge: 31557600000 }));
113/**
114 * Primary app routes.
115 */
116// app.get("*", (req, res) => {
117// res.sendFile(path.join(__dirname, "../src/index-jit.html"));
118// });
119app.get("/", homeController.index);
120app.use("/api/user", userController.router);
121app.use("/api/config", configController.router);
122app.use("/api/form", formController.router);
123app.use("/api/bpmn", bpmnController.router);
124app.use("/api/diagram", diagramController.router);
125app.use("/api/fake", fakeController.router);
126app.use("/api/data", dataController.router);
127app.use("/api/event", eventController.router);
128app.use("/api/source", sourceController.router);
129// app.get("/login", userController.getLogin);
130// app.post("/login", userController.postLogin);
131// app.get("/logout", userController.logout);
132// app.get("/forgot", userController.getForgot);
133// app.post("/forgot", userController.postForgot);
134// app.get("/reset/:token", userController.getReset);
135// app.post("/reset/:token", userController.postReset);
136// app.get("/signup", userController.getSignup);
137// app.post("/signup", userController.postSignup);
138// app.get("api/account", passportConfig.isAuthenticated, userController.getAccount);
139app.post("/api/account/profile", userController.postUpdateProfile);
140app.post("/account/password", passportConfig.isAuthenticated, userController.postUpdatePassword);
141app.post("/account/delete", passportConfig.isAuthenticated, userController.postDeleteAccount);
142app.get("/account/unlink/:provider", passportConfig.isAuthenticated, userController.getOauthUnlink);
143// app.get("/api", apiController.getApi);
144/**
145 * Error Handler. Provides full stack - remove for production
146 */
147app.use(errorHandler());
148app.listen(app.get("port"), () => {
149 console.log(" App is running at http://localhost:%d in %s mode", app.get("port"), app.get("env"));
150 console.log(" Press CTRL-C to stop\n");
151 sourceController.sourceJob();
152});
153module.exports = app;
154//# sourceMappingURL=server.js.map
\No newline at end of file