diff --git a/lib/index.js b/lib/index.js index dbf5c05..1daa24b 100644 --- a/lib/index.js +++ b/lib/index.js @@ -13,24 +13,41 @@ function noQsMethod(options) { Namespace.events.push('authenticated'); } } - - var auth_timeout = setTimeout(function () { - socket.disconnect('unauthorized'); - }, options.timeout || 5000); - + + if(options.required){ + var auth_timeout = setTimeout(function () { + socket.disconnect('unauthorized'); + }, options.timeout || 5000); + } + socket.on('authenticate', function (data) { - clearTimeout(auth_timeout); + if(options.required){ + clearTimeout(auth_timeout); + } + jwt.verify(data.token, options.secret, options, function(err, decoded) { - if (err) { + var onError = function(){ return socket.disconnect('unauthorized'); + }; + + if (err) { + onError(); } - - socket.decoded_token = decoded; - socket.emit('authenticated'); - if (server.$emit) { - server.$emit('authenticated', socket); - } else { - server.server.sockets.emit('authenticated', socket); + + var onSuccess = function(){ + socket.decoded_token = decoded; + socket.emit('authenticated'); + if (server.$emit) { + server.$emit('authenticated', socket); + } else { + server.server.sockets.emit('authenticated', socket); + } + }; + + if(options.additional_auth){ + options.additional_auth(decoded, onSuccess, onError); + }else{ + onSuccess(); } }); });