Merge branch 'master' into typings

This commit is contained in:
Conrad Sopala
2019-07-24 16:03:10 +02:00
committed by GitHub
16 changed files with 271 additions and 264 deletions

View File

@ -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);