-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
99 lines (86 loc) · 3.71 KB
/
Copy pathapp.js
File metadata and controls
99 lines (86 loc) · 3.71 KB
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
const express = require("express");
const bodyParser = require("body-parser");
const cookieParser = require("cookie-parser");
const helmet = require("helmet"); // Security middleware
const rateLimit = require("express-rate-limit"); // Rate limiting middleware
const morgan = require("morgan");
const path = require("path");
const cors = require("cors");
const app = express();
const errorMiddleware = require("./middlewares/defaultError");
const MAX_API_RATE_LIMIT = process.env.MAX_API_RATE_LIMIT || 30;
const MAX_BAN_TIME_MS = process.env.MAX_BAN_TIME_MS || 1 * 60 * 1000;
app.enable("trust proxy");
app.set("trust proxy", 1);
app.use(morgan("combined"));
const userRateLimiter = rateLimit({
windowMs: MAX_BAN_TIME_MS,
max: MAX_API_RATE_LIMIT,
message: {
success: false,
message: `You have exceeded the ${MAX_API_RATE_LIMIT} requests per minute limit. Please try again later.`,
},
});
app.use(userRateLimiter);
app.use(express.json());
app.use(helmet()); // Use helmet for security headers
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use("/uploads/kyc", express.static(path.join(__dirname, "uploads/kyc")));
//app.use(express.static("uploads"));
app.use(
cors({
origin: ["http://127.0.0.1:3000", "http://127.0.0.1:5173"],
methods: ["GET", "POST", "PUT", "DELETE"],
credentials: true,
exposedHeaders: ["X-Total-Records", "X-Total-Pages"],
})
);
//route Imports
const authRoutes = require("./routes/authRoutes");
const adminUserRoutes = require("./routes/admin/userRoutes");
const adminTransactionRoutes = require("./routes/admin/transactionRoutes");
const notificationRoutes = require("./routes/notificationRoutes");
const programRoutes = require("./routes/programRoutes");
const ranksRoutes = require("./routes/admin/ranksRoutes");
const adminProfitConfigRoutes = require("./routes/admin/profitConfigRoutes");
const transactionRoutes = require("./routes/transactionRoutes");
const referralRoutes = require("./routes/referralRoutes");
const userRoutes = require("./routes/userRoutes");
const analyticsRoutes = require("./routes/analyticsRoutes");
const adminAnalyticsRoutes = require("./routes/admin/analyticsRoutes");
const adminAnnouncementRoutes = require("./routes/admin/announcementRoutes");
const announcementRoutes = require("./routes/announcementRoutes");
const rankRoutes = require("./routes/rankRoutes");
const otpRoutes = require("./routes/otpRoutes");
const rewardRoutes = require("./routes/rewardRoutes");
const BASE_ROUTE = "/api/v1";
app.use(`${BASE_ROUTE}/auth`, authRoutes);
app.use(`${BASE_ROUTE}/user`, userRoutes);
app.use(`${BASE_ROUTE}/notifications`, notificationRoutes);
app.use(`${BASE_ROUTE}/programs`, programRoutes);
app.use(`${BASE_ROUTE}/admin/ranks`, ranksRoutes);
app.use(`${BASE_ROUTE}/admin/profitconfig`, adminProfitConfigRoutes);
app.use(`${BASE_ROUTE}/transactions`, transactionRoutes);
app.use(`${BASE_ROUTE}/referrals`, referralRoutes);
app.use(`${BASE_ROUTE}/analytics`, analyticsRoutes);
app.use(`${BASE_ROUTE}/admin/analytics`, adminAnalyticsRoutes);
app.use(`${BASE_ROUTE}/admin/users`, adminUserRoutes);
app.use(`${BASE_ROUTE}/admin/transactions`, adminTransactionRoutes);
app.use(`${BASE_ROUTE}/admin/announcements`, adminAnnouncementRoutes);
app.use(`${BASE_ROUTE}/announcements`, announcementRoutes);
app.use(`${BASE_ROUTE}/rank`, rankRoutes);
app.use(`${BASE_ROUTE}/otp`, otpRoutes);
app.use(`${BASE_ROUTE}/reward`, rewardRoutes);
app.set('view engine', 'ejs');
app.set('views', './utils/emailTemplates');
app.get('/email', async(req, res) => {
res.render('emailConfirm', {
title: 'EJS Components Example',
content: 'This is the content of the main page.',
});
});
// errorMidelware
app.use(errorMiddleware);
module.exports = app;