-
Notifications
You must be signed in to change notification settings - Fork 171
/
users.js
92 lines (75 loc) · 2.04 KB
/
users.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
var db = require('../config/mongo_database');
var jwt = require('jsonwebtoken');
var secret = require('../config/secret');
var redisClient = require('../config/redis_database').redisClient;
var tokenManager = require('../config/token_manager');
exports.signin = function(req, res) {
var username = req.body.username || '';
var password = req.body.password || '';
if (username == '' || password == '') {
return res.send(401);
}
db.userModel.findOne({username: username}, function (err, user) {
if (err) {
console.log(err);
return res.send(401);
}
if (user == undefined) {
return res.send(401);
}
user.comparePassword(password, function(isMatch) {
if (!isMatch) {
console.log("Attempt failed to login with " + user.username);
return res.send(401);
}
var token = jwt.sign({id: user._id}, secret.secretToken, { expiresInMinutes: tokenManager.TOKEN_EXPIRATION });
return res.json({token:token});
});
});
};
exports.logout = function(req, res) {
if (req.user) {
tokenManager.expireToken(req.headers);
delete req.user;
return res.send(200);
}
else {
return res.send(401);
}
}
exports.register = function(req, res) {
var username = req.body.username || '';
var password = req.body.password || '';
var passwordConfirmation = req.body.passwordConfirmation || '';
if (username == '' || password == '' || password != passwordConfirmation) {
return res.send(400);
}
var user = new db.userModel();
user.username = username;
user.password = password;
user.save(function(err) {
if (err) {
console.log(err);
return res.send(500);
}
db.userModel.count(function(err, counter) {
if (err) {
console.log(err);
return res.send(500);
}
if (counter == 1) {
db.userModel.update({username:user.username}, {is_admin:true}, function(err, nbRow) {
if (err) {
console.log(err);
return res.send(500);
}
console.log('First user created as an Admin');
return res.send(200);
});
}
else {
return res.send(200);
}
});
});
}