forked from prashantmall1997/CS_546_FinalProject_Group7
-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
180 lines (161 loc) · 4.1 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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
//Clear server console
console.clear();
//Require Express, Express Handlebars, Express Session & Cookie Parser
const express = require("express");
const moment = require("moment");
const session = require("express-session");
const cookieParser = require("cookie-parser");
const exphbs = require("express-handlebars");
require("dotenv").config();
const xss = require("xss");
//Setup Static Folder and Routes File
const static = express.static(__dirname + "/public");
const configRoutes = require("./routes");
//Setup Express App & Middleware
const app = express();
app.use("/public", static);
app.use(cookieParser());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
//Setup Express View Engine as Express Handlebars
//Formats for moment.js can be found here: https://momentjs.com/
app.engine(
"handlebars",
exphbs({
defaultLayout: "main",
helpers: require("./config/handlebars-helpers"),
})
);
app.set("view engine", "handlebars");
//Create Express Session
app.use(
session({
name: "getAPet",
secret: "the quick brown fox jumps over the lazy dog",
saveUninitialized: true,
resave: false,
cookie: { maxAge: 6000000 },
})
);
//XSS
app.use("*", (req, res, next) => {
// console.log(req.method);
if (req.body) {
// console.log(req.body);
Object.keys(req.body).map(function (key, index) {
if (typeof req.body[key] === "string") {
req.body[key] = xss(req.body[key]);
}
});
// console.log(req.body);
if (req.params) {
// console.log(req.params);
Object.keys(req.params).map(function (key, index) {
if (typeof req.params[key] === "string") {
req.params[key] = xss(req.params[key]);
}
});
// console.log(req.params);
}
next();
} else {
next();
}
});
app.use("*", (req, res, next) => {
if (req.session.user) {
req.body.isLoggedIn = true;
req.body.userData = req.session.user;
next();
} else {
req.body.isLoggedIn = false;
next();
}
});
//Middleware: Check if user is already signed in on signup route
app.use("/", (req, res, next) => {
if (req.session.user) {
req.body.isLoggedIn = true;
req.body.userData = req.session.user;
next();
} else {
req.body.isLoggedIn = false;
next();
}
});
//Middleware: Check if user is already signed in on signup route
app.use("/signup", (req, res, next) => {
if (req.session.user) {
return res.redirect("/");
} else {
req.body.isLoggedIn = false;
next();
}
});
//Middleware: Check if user is already logged in on login route
app.use("/login", (req, res, next) => {
if (req.session.user) {
return res.redirect("/");
} else {
req.body.isLoggedIn = false;
next();
}
});
//Middleware: Check if user is already signed in on profile route
app.use("/profile", (req, res, next) => {
if (!req.session.user) {
return res.redirect("/login");
} else {
req.body.userData = req.session.user;
next();
}
});
app.use("/petOwner", (req, res, next) => {
if (!req.session.user) {
return res.redirect("/login");
} else {
req.body.userData = req.session.user;
next();
}
});
app.use("/logout", (req, res, next) => {
if (!req.session.user) {
return res.redirect("/");
} else {
next();
}
});
//Middleware: Check if user is already signed in on feedback route
app.use("/feedback", (req, res, next) => {
if (!req.session.user) {
return res.redirect("/login");
} else {
next();
}
});
//Middleware: Check if user is already signed in on helppage route
app.use("/helppage", (req, res, next) => {
if (!req.session.user) {
return res.redirect("/login");
} else {
next();
}
});
app.use("/profile", (req, res, next) => {
if (req.session.user) {
if (req.session.user.userType === "srUser") {
return res.redirect("/shelterUser");
} else if (req.session.user.userType === "popaUser") {
return res.redirect("/petOwner");
}
next();
} else {
return res.redirect("/login");
}
});
//Setup Routes
configRoutes(app);
//Start Application
app.listen(process.env.PORT || 3000, () => {
console.log("We've now got a server!");
});