1 const db
= require("../utils/database");
8 * ** Strings, identification informations:
12 * initials : computed, Benjamin Auder --> ba ...etc
15 * timestamp: datetime (validity)
16 * ip: address of requesting machine
18 * sessionTokens (array): cookie identification
21 getInitialsByPrefix: function(prefix
, cb
)
24 { initials: new RegExp("^" + prefix
) },
25 { initials: 1, _id: 0 },
30 insert: function(newUser
, cb
)
32 db
.users
.insert(Object
.assign({},
42 getByLoginToken: function(token
, cb
)
45 { "loginToken.value": token
},
50 getBySessionToken: function(token
, cb
)
53 { sessionTokens: token
},
58 getById: function(uid
, cb
)
66 getByEmail: function(email
, cb
)
74 getByInitials: function(initials
, cb
)
77 { initials: initials
},
82 getUnlogged: function(cb
)
84 var tsNow
= new Date().getTime();
85 // 86400000 = 24 hours in milliseconds
87 db
.users
.find({}, (err
,userArray
) => {
88 let unlogged
= userArray
.filter( u
=> {
89 return u
.sessionTokens
.length
==0 && u
._id
.getTimestamp().getTime() + day
< tsNow
;
97 db
.users
.find({}, cb
);
100 setLoginToken: function(token
, uid
, ip
, cb
)
104 { $set: { loginToken: {
106 timestamp: new Date().getTime(),
114 setSessionToken: function(token
, uid
, cb
)
116 // Also empty the login token to invalidate future attempts
120 $set: { loginToken: {} },
121 $push: { sessionTokens: {
123 $slice: -7 //only allow 7 simultaneous connections per user (TODO?)
130 removeToken: function(uid
, token
, cb
)
134 { $pull: {sessionTokens: token
} },
139 // TODO: later, allow account removal
140 remove: function(uids
)
142 db
.users
.remove({_id: uids
});
146 module
.exports
= UserEntity
;