forked from CodeboxIDE/codebox
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathusers.js
More file actions
76 lines (62 loc) · 1.56 KB
/
users.js
File metadata and controls
76 lines (62 loc) · 1.56 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
var Q = require('q');
var _ = require('lodash');
var logger = require('./utils/logger')("users");
var events = require('./events');
var hooks = require('./hooks');
var users = {};
var colors = [
"#1abc9c",
"#9b59b6",
"#e67e22",
"#16a085",
"#c0392b",
"#2980b9",
"#f39c12",
"#8e44ad"
];
var infosUser = function(userId) {
userId = _.isString(userId)? userId : userId.id;
if (!users[userId]) return Q.reject(new Error("User doesn't exists"));
return Q(_.omit(users[userId], "token"));
};
var getUser = function(userId) {
return users[userId];
};
var listUsers = function() {
return _.map(users, function(user) {
return _.omit(user, "token")
});
};
var activeUser = function(userId) {
userId = _.isString(userId)? userId : userId.id;
if (!users[userId]) return Q.reject(new Error("User doesn't exists"));
users[userId].mtime = Date.now();
return infosUser(userId);
};
var auth = function(email, token, req) {
return hooks.use("users.auth", {
'email': email,
'token': token
})
.then(function(user) {
user.color = colors[_.size(users) % colors.length];
users[user.id] = user;
return activeUser(user);
})
.then(function(user) {
events.emit("users:add", user);
if (req) req.session.userId = user.id;
return user;
});
};
var init = function(options) {
logger.log("init users");
};
module.exports = {
init: init,
auth: auth,
active: activeUser,
infos: infosUser,
list: listUsers,
get: getUser
};