UNPKG

1.03 kBJavaScriptView Raw
1var q = require('q'),
2 _ = require('lodash'),
3 crypto = require('crypto'),
4 common = require('@screeps/common'),
5 env = common.storage.env;
6
7exports.genToken = function (id) {
8 var token = crypto.createHmac('sha1', 'hsdhweh342sdbj34e').update(new Date().getTime() + id).digest('hex');
9 return env.setex(`auth_${token}`, 60, id)
10 .then(() => token);
11};
12
13exports.checkToken = function (token, noConsume) {
14
15 var authKey = `auth_${token}`;
16
17 return env.get(authKey)
18 .then((data) => {
19 if (!data) {
20 return q.reject(false);
21 }
22
23 if (!noConsume) {
24 env.ttl(authKey)
25 .then((ttl) => {
26 if (ttl > 100) {
27 env.expire(authKey, 60);
28 }
29 });
30 }
31 return common.storage.db.users.findOne({_id: data})
32 })
33 .then((user) => {
34 if (!user) {
35 return q.reject(false);
36 }
37 env.set(env.keys.USER_ONLINE+user._id, Date.now());
38 return user;
39 });
40
41};
\No newline at end of file