-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsession.js
More file actions
24 lines (20 loc) · 767 Bytes
/
Copy pathsession.js
File metadata and controls
24 lines (20 loc) · 767 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var crypto = require("crypto"),
qs = require("querystring");
var tokens = {};
exports.create = function(user){
var tokenRaw = new Date().toISOString() + "!@#$%^&*()_+" + user.login + "!@#$%^&*()_+" + user.pass;
var token = crypto.createHash('sha256').update(tokenRaw, 'utf8').digest('hex');
// if there's a collision, let it do whatever because I don't even
tokens[token] = user.login;
setTimeout(function(){ delete tokens[token]; }, 1000 * 3600 * 24);
return token;
}
exports.verify = function(token){
// is it bad to have it executed twice per request? probably
if(!token) return null;
var user = tokens[token];
return user;
}
exports.extract = function(request){
return qs.parse(request.headers.cookie).token;
}