From 89e80b2d7d5cea2a16e9f50f2847044b28d93ecd Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Thu, 8 Dec 2016 16:32:24 -0500 Subject: [PATCH] LP#1526185 Teach egNet about PERM_FAILURE events Teach egNet to broadcast a message when a PERM_FAILURE event occurs, similar to how currently handles NO_SESSION events. The new event will look like: $rootScope.$broadcast('egNetPermFailure', { service : service, method : method, params : params, perm_evt : evt }); Signed-off-by: Bill Erickson --- Open-ILS/web/js/ui/default/staff/services/net.js | 44 +++++++++++++++++++----- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/Open-ILS/web/js/ui/default/staff/services/net.js b/Open-ILS/web/js/ui/default/staff/services/net.js index 156d554ada..26fe36cd03 100644 --- a/Open-ILS/web/js/ui/default/staff/services/net.js +++ b/Open-ILS/web/js/ui/default/staff/services/net.js @@ -39,16 +39,35 @@ function($q, $rootScope, egEvent) { var net = {}; - // raises the egAuthExpired event on NO_SESSION - net.checkResponse = function(resp) { + // raises global event handlers when needed. + net.checkResponse = function(resp, service, method, params) { var content = resp.content(); - if (!content) return null; var evt = egEvent.parse(content); - if (evt && evt.textcode == 'NO_SESSION') { - $rootScope.$broadcast('egAuthExpired') - } else { - return content; + + if (evt) { + switch(evt.textcode) { + + case 'NO_SESSION': + $rootScope.$broadcast('egAuthExpired'); + return {reject : true}; + + case 'PERM_FAILURE': + $rootScope.$broadcast('egNetPermFailure', { + service : service, + method : method, + params : params, + perm_evt : evt + }); + return {reject : true}; + + // Add other global event handlers here. + + default: + // other event types are passed to the caller. + } } + + return {content : content}; }; net.request = function(service, method) { @@ -64,8 +83,15 @@ function($q, $rootScope, egEvent) { deferred.resolve(last); }, onresponse : function(r) { - last = net.checkResponse(r.recv()); - deferred.notify(last); + var stat = + net.checkResponse(r.recv(), service, method, params); + + if (stat.reject) { + deferred.reject(); + } else { + last = stat.content; + deferred.notify(last); + } }, onerror : function(msg) { // 'msg' currently tells us very little, so don't -- 2.11.0