1 | var q = require('q'),
|
2 | _ = require('lodash'),
|
3 | crypto = require('crypto'),
|
4 | common = require('@screeps/common'),
|
5 | env = common.storage.env;
|
6 |
|
7 | exports.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 |
|
13 | exports.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 |