-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfunctions.js
More file actions
85 lines (84 loc) · 2.28 KB
/
functions.js
File metadata and controls
85 lines (84 loc) · 2.28 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
module.exports = {
containsObject: function (obj, list) {
var i
if (obj === null || typeof list === 'undefined' || typeof list.length === 'undefined') {
return false
}
for (i = 0; i < list.length; i++) {
if (list[i] === obj) {
return true
}
}
return false
},
getUserFromRequest: function (req, writing) {
var md5 = require('MD5')
var userAgent = req.headers['user-agent']
var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress
if (writing) {
var token = req.headers.token
return md5(userAgent + token + ip)
} else {
return md5(userAgent + ip)
}
},
isLoggedIn: function (users, writing) {
return function (req, res, next) {
var user = module.exports.getUserFromRequest(req, writing)
if (module.exports.containsObject(user, users)) {
next()
} else {
if (writing) {
res.sendStatus(401)
} else {
res.redirect(302, 'login.html')
}
}
}
},
isAdmin: function (admins, writing) {
return function (req, res, next) {
var user = module.exports.getUserFromRequest(req, writing)
if (module.exports.containsObject(user, admins)) {
req.admin = true
} else {
req.admin = false
}
next()
}
},
createEntry: function (loggedIn, userAgent, ip, token, callback) {
var md5 = require('MD5')
loggedIn.push(md5(userAgent + token + ip))
loggedIn.push(md5(userAgent + ip))
callback()
},
createAdmin: function (admins, userAgent, ip, token, callback) {
var md5 = require('MD5')
admins.push(md5(userAgent + token + ip))
admins.push(md5(userAgent + ip))
callback()
},
removeEntry: function (loggedIn, admins, userAgent, ip, token, callback) {
var md5 = require('MD5')
var t1 = md5(userAgent + token + ip)
var t2 = md5(userAgent + ip)
var index1 = loggedIn.indexOf(t1)
if (index1 > -1) {
loggedIn.splice(index1, 1)
}
var index2 = loggedIn.indexOf(t2)
if (index2 > -1) {
loggedIn.splice(index2, 1)
}
var index3 = admins.indexOf(t1)
if (index3 > -1) {
admins.splice(index3, 1)
}
var index4 = admins.indexOf(t2)
if (index4 > -1) {
admins.splice(index4, 1)
}
callback()
}
}