-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmiddleware.js
More file actions
65 lines (56 loc) · 2.26 KB
/
Copy pathmiddleware.js
File metadata and controls
65 lines (56 loc) · 2.26 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
const Owner = require("./models/owner.js");
const Merchant = require("./models/merchant.js");
const helper = require("./controllers/helper.js");
module.exports = {
verifySession: function(req, res, next){
if(req.session.owner === undefined) {
req.session.error = "PLEASE LOG IN";
return res.redirect("/login");
}
let owner = Owner.findOne({"session.sessionId": req.session.owner});
let merchant = Merchant.findOne({_id: req.session.merchant});
Promise.all([owner, merchant])
.then((response)=>{
if(response[0] === null || response[1] === null) throw "login";
if(response[0]._id.toString() !== response[1].owner.toString()) throw "login";
//Check if session is out of date
if(response[0].session.expiration < new Date()){
let newExpiration = new Date();
newExpiration.setDate(newExpiration.getDate() + 90);
response[0].session.sessionId = helper.generateId(25);
response[0].session.expiration = newExpiration;
response[0].save();
throw "login";
}
res.locals.owner = response[0];
res.locals.merchant = response[1];
return next();
})
.catch((err)=>{
if(err === "login"){
req.session.owner = undefined;
req.session.error = "PLEASE LOG IN";
return res.redirect("/login");
}
return res.json("ERROR: UNABLE TO RETRIEVE DATA");
});
},
formatBanner: function(req, res, next){
if(req.session.error !== undefined){
res.locals.banner = {
type: "error",
message: req.session.error,
color: "red"
};
req.session.error = undefined;
}else if(req.session.success !== undefined){
res.locals.banner = {
type: "notification",
message: req.session.success,
color: "green"
};
req.session.success = undefined;
}
return next();
}
}