-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
114 lines (100 loc) · 3.05 KB
/
app.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
103
104
105
106
107
108
109
110
111
112
113
114
require("./db/conn");
//cron jobs
require("./job/Task");
const express = require("express");
const bodyParser = require("body-parser");
const cookieParser = require("cookie-parser");
const path = require("path");
const multer = require("multer");
const cors = require("cors");
const errorHandler = require("./middleware/error");
const morgan = require("morgan");
const { v4: uuidv4 } = require("uuid");
//App Routes
const OrganizationRoutes = require("./routes/Organization");
const EmployeeRoutes = require("./routes/Employee");
const TaskRoutes = require("./routes/Task");
const TimeRoutes = require("./routes/Time");
const LeaveRoutes = require("./routes/Leave");
const AnnouncementRoutes = require("./routes/Announcement");
const ChatRoutes = require("./routes/Chat");
const NotificationRoutes = require("./routes/Notification");
const WakaTimeRoutes = require("./routes/Wakatime");
const CourseRoutes = require("./routes/Courses");
const WelcomeRoutes = require("./routes/Welcome");
//App initialization
const app = express();
app.use(
cors({
origin: "*",
preflightContinue: true,
methods: "GET, HEAD, PUT, POST, DELETE",
})
);
const fileStorage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, "images");
},
filename: (req, file, cb) => {
cb(null, uuidv4() + "-" + file.originalname);
},
});
const fileFilter = (req, file, cb) => {
if (
file.mimetype === "image/png" ||
file.mimetype === "image/jpg" ||
file.mimetype === "image/jpeg" ||
file.mimetype === "application/pdf"
) {
cb(null, true);
} else {
cb(null, false);
}
};
app.use(cors());
app.use(morgan("dev"));
//App utilities
app.use(express.static(path.join(__dirname, "Public")));
app.use(bodyParser.urlencoded({ extended: false })); //x-www-form-urlencoded
app.use(
bodyParser.json({
limit: "50mb",
extended: true,
})
); //application/json
app.use(
multer({
storage: fileStorage,
fileFilter: fileFilter,
limits: { fileSize: 15728640 },
}).fields([{ name: "pan_attachment", maxCount: 1 }])
);
app.use(cookieParser());
app.use((req, res, next) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader(
"Access-Control-Allow-Methods",
"OPTIONS,GET,POST,PUT,PATCH,DELETE"
);
res.setHeader("Access-Control-Allow-Headers", "Content-Type,Authorization");
next();
});
app.use("/discuss", (req, res) => {
res.sendFile(path.join(__dirname, "view", "chat.html"));
});
app.use("/org", OrganizationRoutes);
app.use("/employee", EmployeeRoutes);
app.use("/task", TaskRoutes);
app.use("/time", TimeRoutes);
app.use("/leave", LeaveRoutes);
app.use("/announcement", AnnouncementRoutes);
app.use("/chat", ChatRoutes);
app.use("/notification", NotificationRoutes);
app.use("/wakatime", WakaTimeRoutes);
app.use("/courses", CourseRoutes);
app.use("/welcome", WelcomeRoutes);
app.use("/", (req, res) => {
res.sendFile(path.join(__dirname, "view", "index.html"));
});
app.use(errorHandler);
module.exports = app;