-
Notifications
You must be signed in to change notification settings - Fork 15
/
sessionmodel.js
75 lines (66 loc) · 2.1 KB
/
sessionmodel.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
var uuid = require("uuid");
var forge = require("node-forge");
var userBucket = require("../app").userBucket;
var userBucketName = require("../config").couchbase.userBucket;
var N1qlQuery = require('couchbase').N1qlQuery;
function Session() {};
Session.create = function(userID, callback) {
var sessionModel = {
type: "session",
userID: userID,
sessionID: (uuid.v4()+"_session"),
expiry: 3600
};
userBucket.insert(sessionModel.sessionID, sessionModel, {expiry: sessionModel.expiry}, function(error, result) {
if (error) {
callback(error, null);
return;
}
console.log(sessionModel);
callback(null, sessionModel);
});
};
Session.auth = function (req, res, next) {
var sessionID = req.headers.authorization;
console.log(sessionID);
var sessionArray = sessionID.split(" ");
if (sessionArray[0] === "Bearer") {
var getSession = N1qlQuery.fromString("SELECT userID FROM `" + userBucketName + "` WHERE type = \"session\" AND sessionID = $1");
userBucket.query(getSession, [sessionArray[1]], function (error, result) {
if(error) {
callback(error, null);
return;
}
if (!result[0]) {
console.log("Session expired, please login again.");
res.send("Session expired, please login again.");
return;
}
req.userID = result[0].userID;
next();
});
}
};
/*Session.remove = function(sessionID, callback) {
userBucket.remove(sessionID, function(error, result) { HANDLE THIS ON FRONT-END (sessionModel will delete in 1 hr anyways)
simply delete the cookie upon logout
if(error) {
callback(error, null);
return;
}
callback(null, result);
});
}; */
// interim solution until figure out auth with Nic
Session.findUser = function (sessionID, callback) {
var findUser = N1qlQuery.fromString('SELECT userID FROM `'+userBucketName+'` WHERE sessionID=$1 AND type=\"session\"');
userBucket.query(findUser,[sessionID], function (error, result) {
if(error) {
callback(error, null);
}
console.log(result[0]);
callback(null, result[0].userID);
})
};
// potential Session.delete for forceful login
module.exports = Session;