(js) Reload page when session has expired

pull/110/head
Francis Lachapelle 2015-10-27 11:31:31 -04:00
parent 4172c216f5
commit dc385a82ff
2 changed files with 26 additions and 4 deletions

View File

@ -121,13 +121,15 @@
'gt-lg': '(min-width: 1280px)'
})
.config(configure);
.config(configure)
.factory('AuthInterceptor', AuthInterceptor);
/**
* @ngInject
*/
configure.$inject = ['$logProvider', '$compileProvider', '$mdThemingProvider'];
function configure($logProvider, $compileProvider, $mdThemingProvider) {
configure.$inject = ['$logProvider', '$compileProvider', '$mdThemingProvider', '$httpProvider'];
function configure($logProvider, $compileProvider, $mdThemingProvider, $httpProvider) {
$mdThemingProvider.definePalette('sogo-green', {
'50': 'eaf5e9',
'100': 'cbe5c8',
@ -211,6 +213,23 @@
$logProvider.debugEnabled(false);
$compileProvider.debugInfoEnabled(false);
}
$httpProvider.interceptors.push('AuthInterceptor');
}
AuthInterceptor.$inject = ['$window', '$q'];
function AuthInterceptor($window, $q) {
return {
response: function(response) {
// When expecting JSON but receiving HTML, assume session has expired and reload page
if (/^application\/json/.test(response.config.headers.Accept) &&
/^<!DOCTYPE html>/.test(response.data)) {
$window.location.reload(true);
return $q.reject();
}
return response;
}
};
}
})();

View File

@ -23,7 +23,10 @@
function login() {
Authentication.login(vm.creds)
.then(function(url) {
window.location.href = url;
if (window.location.href === url)
window.location.reload(true);
else
window.location.href = url;
}, function(msg) {
Dialog.alert(l('Authentication Failed'), msg.error);
});