diff --git a/webclient/app.js b/webclient/app.js
index 651aeeaa77..0b613fa206 100644
--- a/webclient/app.js
+++ b/webclient/app.js
@@ -23,8 +23,8 @@ var matrixWebClient = angular.module('matrixWebClient', [
'matrixService'
]);
-matrixWebClient.config(['$routeProvider',
- function($routeProvider) {
+matrixWebClient.config(['$routeProvider', '$provide', '$httpProvider',
+ function($routeProvider, $provide, $httpProvider) {
$routeProvider.
when('/login', {
templateUrl: 'login/login.html',
@@ -41,6 +41,22 @@ matrixWebClient.config(['$routeProvider',
otherwise({
redirectTo: '/rooms'
});
+
+ $provide.factory('AccessTokenInterceptor', ['$q', '$rootScope',
+ function ($q, $rootScope) {
+ return {
+ responseError: function(rejection) {
+ if (rejection.status === 403 && "data" in rejection &&
+ "errcode" in rejection.data &&
+ rejection.data.errcode === "M_UNKNOWN_TOKEN") {
+ console.log("Got a 403 with an unknown token. Logging out.")
+ $rootScope.$broadcast("M_UNKNOWN_TOKEN");
+ }
+ return $q.reject(rejection);
+ }
+ };
+ }]);
+ $httpProvider.interceptors.push('AccessTokenInterceptor');
}]);
matrixWebClient.run(['$location', 'matrixService' , function($location, matrixService) {
@@ -75,4 +91,4 @@ matrixWebClient
return function(text) {
return $sce.trustAsHtml(text);
};
- }]);
\ No newline at end of file
+ }]);
|