1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 |
|
4 |
|
5 |
|
6 | const express = require("express");
|
7 | const compression = require("compression");
|
8 | const session = require("express-session");
|
9 |
|
10 | const bodyParser = require("body-parser");
|
11 | const errorHandler = require("errorhandler");
|
12 | const dotenv = require("dotenv");
|
13 | const mongo = require("connect-mongo");
|
14 | const path = require("path");
|
15 | const mongoose = require("mongoose");
|
16 | const passport = require("passport");
|
17 | const cors = require("cors");
|
18 | const expressValidator = require("express-validator");
|
19 | const MongoStore = mongo(session);
|
20 |
|
21 |
|
22 |
|
23 | dotenv.config({ path: ".env" });
|
24 |
|
25 |
|
26 |
|
27 |
|
28 | require("./models/form.model");
|
29 | require("./models/bpmn.model");
|
30 |
|
31 |
|
32 |
|
33 | const homeController = require("./controllers/home");
|
34 | const userController = require("./controllers/user.controller");
|
35 | const configController = require("./controllers/config.controller");
|
36 | const formController = require("./controllers/form.controller");
|
37 | const bpmnController = require("./controllers/bpmn.controller");
|
38 | const diagramController = require("./controllers/diagram.controller");
|
39 |
|
40 | const fakeController = require("./controllers/fake.controller");
|
41 | const dataController = require("./controllers/data-provider.controller");
|
42 | const eventController = require("./controllers/event.controller");
|
43 | const sourceController = require("./controllers/source.controller");
|
44 |
|
45 |
|
46 |
|
47 | const passportConfig = require("./config/passport");
|
48 |
|
49 |
|
50 |
|
51 | const app = express();
|
52 |
|
53 |
|
54 |
|
55 |
|
56 | mongoose.connect(process.env.MONGODB_URI || process.env.MONGOLAB_URI);
|
57 | mongoose.connection.on("error", () => {
|
58 | console.log("MongoDB connection error. Please make sure MongoDB is running.");
|
59 | process.exit();
|
60 | });
|
61 |
|
62 |
|
63 |
|
64 | app.set("port", process.env.PORT || 3000);
|
65 | app.use(compression());
|
66 | app.use(bodyParser.json());
|
67 | app.use(bodyParser.urlencoded({ extended: true }));
|
68 | app.use(expressValidator());
|
69 | const originsWhitelist = [process.env.TEST_SERVER_ADDRESS, process.env.SERVER_ADDRESS];
|
70 | const corsOptions = {
|
71 | origin: function (origin, callback) {
|
72 | const isWhitelisted = originsWhitelist.indexOf(origin) !== -1;
|
73 | callback(undefined, isWhitelisted);
|
74 | },
|
75 | credentials: true
|
76 | };
|
77 | app.use(cors(corsOptions));
|
78 | app.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 |
|
88 |
|
89 |
|
90 |
|
91 |
|
92 | app.use(passport.initialize());
|
93 | app.use(passport.session());
|
94 | app.use((req, res, next) => {
|
95 | res.locals.user = req.user;
|
96 | next();
|
97 | });
|
98 | app.use((req, res, next) => {
|
99 |
|
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 | });
|
112 | app.use(express.static(path.join(__dirname, "../src"), { maxAge: 31557600000 }));
|
113 |
|
114 |
|
115 |
|
116 |
|
117 |
|
118 |
|
119 | app.get("/", homeController.index);
|
120 | app.use("/api/user", userController.router);
|
121 | app.use("/api/config", configController.router);
|
122 | app.use("/api/form", formController.router);
|
123 | app.use("/api/bpmn", bpmnController.router);
|
124 | app.use("/api/diagram", diagramController.router);
|
125 | app.use("/api/fake", fakeController.router);
|
126 | app.use("/api/data", dataController.router);
|
127 | app.use("/api/event", eventController.router);
|
128 | app.use("/api/source", sourceController.router);
|
129 |
|
130 |
|
131 |
|
132 |
|
133 |
|
134 |
|
135 |
|
136 |
|
137 |
|
138 |
|
139 | app.post("/api/account/profile", userController.postUpdateProfile);
|
140 | app.post("/account/password", passportConfig.isAuthenticated, userController.postUpdatePassword);
|
141 | app.post("/account/delete", passportConfig.isAuthenticated, userController.postDeleteAccount);
|
142 | app.get("/account/unlink/:provider", passportConfig.isAuthenticated, userController.getOauthUnlink);
|
143 |
|
144 |
|
145 |
|
146 |
|
147 | app.use(errorHandler());
|
148 | app.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 | });
|
153 | module.exports = app;
|
154 |
|
\ | No newline at end of file |