YUKI Hiroshi
null+****@clear*****
Fri Jan 10 16:10:59 JST 2014
YUKI Hiroshi 2014-01-10 16:10:59 +0900 (Fri, 10 Jan 2014) New Revision: 6cd5d1fbdecb8feb9e0c48a414e2f6c9eeef8883 https://github.com/droonga/express-droonga/commit/6cd5d1fbdecb8feb9e0c48a414e2f6c9eeef8883 Message: Handle authorization errors by express-droonga itself Modified files: lib/adapter/command.js lib/adapter/http.js Modified: lib/adapter/command.js (+17 -0) =================================================================== --- lib/adapter/command.js 2014-01-09 20:55:41 +0900 (fca3878) +++ lib/adapter/command.js 2014-01-10 16:10:59 +0900 (81cbf07) @@ -305,3 +305,20 @@ function sha1sum(source) { return hash.digest('hex'); } exports.sha1sum = sha1sum; + + +function NotAuthorized(message) { + var error = new Error(message); + error.code = 401; + error.constructor = NotAuthorized; + return error; +} +exports.NotAuthorized = NotAuthorized; + +function NotAllowed(message) { + var error = new Error(message); + error.code = 403; + error.constructor = NotAllowed; + return error; +} +exports.NotAllowed = NotAllowed; Modified: lib/adapter/http.js (+14 -6) =================================================================== --- lib/adapter/http.js 2014-01-09 20:55:41 +0900 (5378219) +++ lib/adapter/http.js 2014-01-10 16:10:59 +0900 (6523e21) @@ -35,21 +35,25 @@ function createRequestResponseHandler(params) { } } - var processRequest = function() { + var processRequest = function(error) { + if (error) { + response.jsonp({ error: error.message }, error.code || 500); + return; + } var wrappedConnection = new wrapper.DroongaProtocolConnectionWrapper(connection, callback, options); if (definition.onRequest) { try { definition.onRequest(request, wrappedConnection, response); } catch(error) { wrappedConnection.destroy(); - response.jsonp(error, 500); + response.jsonp({ error: error.message }, 500); } } else { wrappedConnection.emit(commandName, request.query); } }; if (typeof definition.authorize == 'function') - definition.authorize(processRequest, request, response); + definition.authorize(processRequest, request); else processRequest(); }); @@ -69,17 +73,21 @@ function createGenericHandler(params) { dataset: definition.dataset, timeout: definition.timeout || null }; - var processRequest = function() { + var processRequest = function(error) { + if (error) { + response.jsonp({ error: error.message }, error.code || 500); + return; + } var wrappedConnection = new wrapper.DroongaProtocolConnectionWrapper(connection, options); try { definition.onHandle(request, response, wrappedConnection); } catch(error) { wrappedConnection.destroy(); - response.jsonp(error, 500); + response.jsonp({ error: error.message }, 500); } }; if (typeof definition.authorize == 'function') - definition.authorize(processRequest, request, response); + definition.authorize(processRequest, request); else processRequest(); }); -------------- next part -------------- HTML����������������������������...Download