-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
102 lines (84 loc) · 2.3 KB
/
index.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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
"use strict";
require("express-async-errors");
const express = require("express");
const app = express();
const session = require("express-session");
const passport = require("passport");
const cookieParser = require("cookie-parser");
const MongoStore = require("connect-mongo");
const job = require("./src/helpers/cron");
const { generalRateLimiter } = require("./src/middlewares/rateLimiters");
const {
CLIENT_URL,
PORT,
HOST,
NODE_ENV,
SECRET_KEY,
MONGODB_URI,
} = require("./constants");
// Cron job
console.log("Cron job is being started...");
job.start();
//Connect Database
const { connectDB } = require("./src/configs/dbConnection");
connectDB();
// CORS Configs
const cors = require("cors");
const corsOptions = {
origin: CLIENT_URL,
methods: ["GET", "POST", "PUT", "PATCH", "HEAD", "DELETE", "OPTIONS"],
optionsSuccessStatus: 204,
credentials: true,
};
app.use(cors(corsOptions));
// Passportjs Authentication Config
require("./src/configs/passportjs-auth/passportConfig");
app.use(cookieParser());
app.use(
session({
secret: SECRET_KEY,
resave: false,
saveUninitialized: false,
store: MongoStore.create({
mongoUrl: MONGODB_URI,
collectionName: "sessions",
}),
cookie: {
maxAge: 1000 * 60 * 60 * 24, // 1 day
httpOnly: true,
secure: NODE_ENV,
},
})
);
// setup passport
app.use(passport.initialize()); // integration between passportjs and express app
app.use(passport.session()); // session data controller
// Accept JSON
app.use(express.json({ limit: "10kb" }));
// Accept FormData
app.use(express.urlencoded({ extended: true }));
// Limit requests from same IP
app.use("/", generalRateLimiter);
// Logger:
app.use(require("./src/middlewares/logger"));
// Auhentication:
app.use(require("./src/middlewares/authentication"));
// findSearchSortPage / res.getModelList:
app.use(require("./src/middlewares/queryHandler"));
// Routes:
app.use("/api/v1", require("./src/routes"));
app.all("/", (req, res) => {
res.send({
error: false,
message: "Welcome to Bloggio API",
});
});
app.use((req, res, next) => {
res.status(404).send({
error: true,
message: "Route not found!",
});
});
// errorHandler:
app.use(require("./src/middlewares/errorHandler"));
app.listen(PORT, () => console.log(`server runned on http://${HOST}:${PORT}`));