From cf9a680782b1d6a73a1d376995d0317940cd9a3b Mon Sep 17 00:00:00 2001 From: mottykohn Date: Wed, 27 Sep 2017 23:21:33 -0400 Subject: [PATCH 1/4] A hacky fix for #574 It works but obviously could be better. Just sharing for the interim. --- lib/adal-angular.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/adal-angular.js b/lib/adal-angular.js index 0faa2319..bd7657a1 100644 --- a/lib/adal-angular.js +++ b/lib/adal-angular.js @@ -65,7 +65,7 @@ // special function that exposes methods in Angular controller // $rootScope, $window, $q, $location, $timeout are injected by Angular - this.$get = ['$rootScope', '$window', '$q', '$location', '$timeout', '$injector', function ($rootScope, $window, $q, $location, $timeout, $injector) { + this.$get = ['$rootScope', '$window', '$q', '$location', '$timeout', '$injector', '$transitions', function ($rootScope, $window, $q, $location, $timeout, $injector, $transitions) { var locationChangeHandler = function (event, newUrl, oldUrl) { _adal.verbose('Location change event from ' + oldUrl + ' to ' + newUrl); @@ -296,7 +296,7 @@ // adal interceptor sets the error on config.data property. If it is set, it means state change is rejected by adal, // in which case set the defaultPrevented to true to avoid url update as that sometimesleads to infinte loop. - if (error && error.data) { + if (error && error.data && event) { _adal.info("Setting defaultPrevented to true if state change error occured because adal rejected a request. Error: " + error.data); event.preventDefault(); } @@ -307,10 +307,14 @@ $rootScope.$on('$stateChangeStart', stateChangeHandler); + $transitions.onStart({}, (transition) => stateChangeHandler(null, transition.to())); + $rootScope.$on('$locationChangeStart', locationChangeHandler); $rootScope.$on('$stateChangeError', stateChangeErrorHandler); + $transitions.onError({}, (transition) => stateChangeErrorHandler(null, null, null, null, null, transition.error())); + //Event to track hash change of $window.addEventListener('adal:popUpHashChanged', function (e) { processHash(e.detail); From 389cffd80f32c5e5c95cef2a5640b249d586a580 Mon Sep 17 00:00:00 2001 From: mottykohn Date: Thu, 28 Sep 2017 12:29:53 -0400 Subject: [PATCH 2/4] error is a string not an object --- lib/adal-angular.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/adal-angular.js b/lib/adal-angular.js index bd7657a1..bfc16b8c 100644 --- a/lib/adal-angular.js +++ b/lib/adal-angular.js @@ -292,7 +292,7 @@ }; var stateChangeErrorHandler = function (event, toState, toParams, fromState, fromParams, error) { - _adal.verbose("State change error occured. Error: " + JSON.stringify(error)); + _adal.verbose("State change error occured. Error: " + error); // adal interceptor sets the error on config.data property. If it is set, it means state change is rejected by adal, // in which case set the defaultPrevented to true to avoid url update as that sometimesleads to infinte loop. From e7f6d2d51b26b022c089a36a029c645479aac9cc Mon Sep 17 00:00:00 2001 From: mottykohn Date: Sun, 15 Oct 2017 11:30:34 -0400 Subject: [PATCH 3/4] Made compatible with pre-ui-router 1 --- lib/adal-angular.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/adal-angular.js b/lib/adal-angular.js index bfc16b8c..4cdcbc64 100644 --- a/lib/adal-angular.js +++ b/lib/adal-angular.js @@ -65,7 +65,7 @@ // special function that exposes methods in Angular controller // $rootScope, $window, $q, $location, $timeout are injected by Angular - this.$get = ['$rootScope', '$window', '$q', '$location', '$timeout', '$injector', '$transitions', function ($rootScope, $window, $q, $location, $timeout, $injector, $transitions) { + this.$get = ['$rootScope', '$window', '$q', '$location', '$timeout', '$injector', function ($rootScope, $window, $q, $location, $timeout, $injector) { var locationChangeHandler = function (event, newUrl, oldUrl) { _adal.verbose('Location change event from ' + oldUrl + ' to ' + newUrl); @@ -307,13 +307,15 @@ $rootScope.$on('$stateChangeStart', stateChangeHandler); - $transitions.onStart({}, (transition) => stateChangeHandler(null, transition.to())); - $rootScope.$on('$locationChangeStart', locationChangeHandler); $rootScope.$on('$stateChangeError', stateChangeErrorHandler); - - $transitions.onError({}, (transition) => stateChangeErrorHandler(null, null, null, null, null, transition.error())); + + if ($injector.has('$transitions')) { + var $transitions = $injector.get('$transitions'); + $transitions.onStart({}, (transition) => stateChangeHandler(null, transition.to())); + $transitions.onError({}, (transition) => stateChangeErrorHandler(null, null, null, null, null, transition.error())); + } //Event to track hash change of $window.addEventListener('adal:popUpHashChanged', function (e) { From b0d609e56af4d3b4a07138f7e382b75ca8e84f90 Mon Sep 17 00:00:00 2001 From: mottykohn Date: Sun, 15 Oct 2017 11:41:08 -0400 Subject: [PATCH 4/4] Update adal-angular.js --- lib/adal-angular.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/adal-angular.js b/lib/adal-angular.js index 4cdcbc64..ac58bd62 100644 --- a/lib/adal-angular.js +++ b/lib/adal-angular.js @@ -292,7 +292,7 @@ }; var stateChangeErrorHandler = function (event, toState, toParams, fromState, fromParams, error) { - _adal.verbose("State change error occured. Error: " + error); + _adal.verbose("State change error occured. Error: " + typeof(error) === 'string'? error: JSON.stringify(error)); // adal interceptor sets the error on config.data property. If it is set, it means state change is rejected by adal, // in which case set the defaultPrevented to true to avoid url update as that sometimesleads to infinte loop.