Detect when the user access token is no more valid and log the user out in this case

paul/schema_breaking_changes
Emmanuel ROHEE 2014-08-14 14:59:33 +02:00
parent 613e468b89
commit 7143f358f1
2 changed files with 20 additions and 4 deletions

View File

@ -57,6 +57,12 @@ angular.module('MatrixWebClientController', ['matrixService'])
$location.path("login"); $location.path("login");
}; };
// Listen to the event indicating that the access token is no more valid.
// In this case, the user needs to log in again.
$scope.$on("M_UNKNOWN_TOKEN", function() {
console.log("Invalid access token -> log user out");
$scope.logout();
});
}]); }]);

View File

@ -17,7 +17,7 @@ limitations under the License.
'use strict'; 'use strict';
angular.module('matrixService', []) angular.module('matrixService', [])
.factory('matrixService', ['$http', '$q', function($http, $q) { .factory('matrixService', ['$http', '$q', '$rootScope', function($http, $q, $rootScope) {
/* /*
* Permanent storage of user information * Permanent storage of user information
@ -60,7 +60,6 @@ angular.module('matrixService', [])
headers: headers headers: headers
}) })
.success(function(data, status, headers, config) { .success(function(data, status, headers, config) {
// @TODO: We could detect a bad access token here and make an automatic logout
deferred.resolve(data, status, headers, config); deferred.resolve(data, status, headers, config);
}) })
.error(function(data, status, headers, config) { .error(function(data, status, headers, config) {
@ -70,6 +69,11 @@ angular.module('matrixService', [])
reason = JSON.stringify(data); reason = JSON.stringify(data);
} }
deferred.reject(reason, data, status, headers, config); deferred.reject(reason, data, status, headers, config);
if (403 === status && "M_UNKNOWN_TOKEN" === data.errcode) {
// The access token is no more valid, broadcast the issue
$rootScope.$broadcast("M_UNKNOWN_TOKEN");
}
}); });
return deferred.promise; return deferred.promise;
@ -301,6 +305,12 @@ angular.module('matrixService', [])
return doBaseRequest(config.identityServer, "POST", path, {}, data, headers); return doBaseRequest(config.identityServer, "POST", path, {}, data, headers);
}, },
//
testLogin: function() {
},
/****** Permanent storage of user information ******/ /****** Permanent storage of user information ******/
// Returns the current config // Returns the current config