add noqs method

This commit is contained in:
José F. Romaniello
2014-01-13 18:41:10 -03:00
parent 14a34ae380
commit b0f4354ecb
5 changed files with 148 additions and 10 deletions

View File

@ -1,9 +1,30 @@
var xtend = require('xtend');
var jwt = require('jsonwebtoken');
var UnauthorizedError = require('./UnauthorizedError');
var url = require('url');
function authorize(options) {
function noQsMethod(options, onConnection) {
return function (socket) {
var auth_timeout = setTimeout(function () {
socket.disconnect('unauthorized');
}, options.timeout || 5000);
socket.on('authenticate', function (data) {
clearTimeout(auth_timeout);
jwt.verify(data.token, options.secret, options, function(err, decoded) {
if (err) {
return socket.disconnect('unauthorized');
}
socket.user = decoded;
socket.emit('authenticated');
onConnection(socket);
});
});
};
}
function authorize(options, onConnection) {
var defaults = {
success: function(data, accept){
accept(null, true);
@ -15,6 +36,10 @@ function authorize(options) {
var auth = xtend(defaults, options);
if (onConnection) {
return noQsMethod(options, onConnection);
}
return function(data, accept){
var token, error;