-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
56 lines (51 loc) · 1.46 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
const express = require("express");
const flash = require("connect-flash");
const R = require("ramda");
const failure = require("./handlers/failure");
const routesAuth = require("./routes/auth");
const routesGoogle = require("./routes/google");
const routesApiUser = require("./routes/api/user");
const findOrigin = require("./origins");
const ensureLoggedIn = require("./origins/guards/ensureLoggedIn");
const guards = require("./origins/guards");
const addHeaders = require("./origins/addHeaders");
const proxy = require("./proxies/standard");
const hook = require("./hooks/track");
function main(db) {
if (!db) {
throw new Error("db not defined");
}
const sessionDriver = R.pathOr(
process.env.SESSION_DRIVER,
["session", "driver"],
db
);
const session = require("./sessions/" + sessionDriver);
// todo: google is only supported atm, maybe add the others back
const authStrategy = "google";
const auth = require("./strategies/" + authStrategy);
const strategy = auth(db);
const app = express();
app.use(function(req, res, next) {
req.start = new Date().toString();
next();
});
app.use(session);
app.use(flash());
app.use(failure);
app.use(strategy.initialize());
app.use(strategy.session());
app.use("/", routesAuth, routesGoogle);
app.use("/api", routesApiUser);
app.use(
"/*",
findOrigin(db),
ensureLoggedIn,
guards,
addHeaders,
proxy,
hook(db)
);
return app;
}
module.exports = main;