Merge branch 'master' into typings
This commit is contained in:
42
lib/index.js
42
lib/index.js
@ -35,7 +35,7 @@ function noQsMethod(options) {
|
||||
message: (Object.prototype.toString.call(err) === '[object Object]' && err.message) ? err.message : err
|
||||
});
|
||||
var callback_timeout;
|
||||
// If callback explicitely set to false, start timeout to disconnect socket
|
||||
// If callback explicitely set to false, start timeout to disconnect socket
|
||||
if (options.callback === false || typeof options.callback === "number") {
|
||||
if (typeof options.callback === "number") {
|
||||
if (options.callback < 0) {
|
||||
@ -57,10 +57,15 @@ function noQsMethod(options) {
|
||||
}
|
||||
};
|
||||
|
||||
if(!data || typeof data.token !== "string") {
|
||||
var token = options.cookie ? socket.request.cookies[options.cookie] : (data ? data.token : undefined);
|
||||
|
||||
if(!token || typeof token !== "string") {
|
||||
return onError({message: 'invalid token datatype'}, 'invalid_token');
|
||||
}
|
||||
|
||||
// Store encoded JWT
|
||||
socket[options.encodedPropertyName] = data.token;
|
||||
|
||||
var onJwtVerificationReady = function(err, decoded) {
|
||||
|
||||
if (err) {
|
||||
@ -96,31 +101,31 @@ function noQsMethod(options) {
|
||||
return onError(err, 'invalid_secret');
|
||||
}
|
||||
|
||||
jwt.verify(data.token, secret, options, onJwtVerificationReady);
|
||||
jwt.verify(token, secret, options, onJwtVerificationReady);
|
||||
};
|
||||
|
||||
getSecret(socket.request, options.secret, data.token, onSecretReady);
|
||||
getSecret(socket.request, options.secret, token, onSecretReady);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
function authorize(options, onConnection) {
|
||||
options = xtend({ decodedPropertyName: 'decoded_token' }, options);
|
||||
options = xtend({ decodedPropertyName: 'decoded_token', encodedPropertyName: 'encoded_token' }, options);
|
||||
|
||||
if (!options.handshake) {
|
||||
return noQsMethod(options);
|
||||
}
|
||||
|
||||
var defaults = {
|
||||
success: function(data, accept){
|
||||
if (data.request) {
|
||||
success: function(socket, accept){
|
||||
if (socket.request) {
|
||||
accept();
|
||||
} else {
|
||||
accept(null, true);
|
||||
}
|
||||
},
|
||||
fail: function(error, data, accept){
|
||||
if (data.request) {
|
||||
fail: function(error, socket, accept){
|
||||
if (socket.request) {
|
||||
accept(error);
|
||||
} else {
|
||||
accept(null, false);
|
||||
@ -130,9 +135,9 @@ function authorize(options, onConnection) {
|
||||
|
||||
var auth = xtend(defaults, options);
|
||||
|
||||
return function(data, accept){
|
||||
return function(socket, accept){
|
||||
var token, error;
|
||||
var req = data.request || data;
|
||||
var req = socket.request || socket;
|
||||
var authorization_header = (req.headers || {}).authorization;
|
||||
|
||||
if (authorization_header) {
|
||||
@ -148,7 +153,7 @@ function authorize(options, onConnection) {
|
||||
error = new UnauthorizedError('credentials_bad_format', {
|
||||
message: 'Format is Authorization: Bearer [token]'
|
||||
});
|
||||
return auth.fail(error, data, accept);
|
||||
return auth.fail(error, socket, accept);
|
||||
}
|
||||
}
|
||||
|
||||
@ -164,25 +169,28 @@ function authorize(options, onConnection) {
|
||||
error = new UnauthorizedError('credentials_required', {
|
||||
message: 'No Authorization header was found'
|
||||
});
|
||||
return auth.fail(error, data, accept);
|
||||
return auth.fail(error, socket, accept);
|
||||
}
|
||||
|
||||
// Store encoded JWT
|
||||
socket[options.encodedPropertyName] = token;
|
||||
|
||||
var onJwtVerificationReady = function(err, decoded) {
|
||||
|
||||
if (err) {
|
||||
error = new UnauthorizedError(err.code || 'invalid_token', err);
|
||||
return auth.fail(error, data, accept);
|
||||
return auth.fail(error, socket, accept);
|
||||
}
|
||||
|
||||
data[options.decodedPropertyName] = decoded;
|
||||
socket[options.decodedPropertyName] = decoded;
|
||||
|
||||
return auth.success(data, accept);
|
||||
return auth.success(socket, accept);
|
||||
};
|
||||
|
||||
var onSecretReady = function(err, secret) {
|
||||
if (err) {
|
||||
error = new UnauthorizedError(err.code || 'invalid_secret', err);
|
||||
return auth.fail(error, data, accept);
|
||||
return auth.fail(error, socket, accept);
|
||||
}
|
||||
|
||||
jwt.verify(token, secret, options, onJwtVerificationReady);
|
||||
|
Reference in New Issue
Block a user