summary refs log tree commit diff
path: root/webclient/app.js
diff options
context:
space:
mode:
authorKegan Dougal <kegan@matrix.org>2014-08-14 15:21:39 +0100
committerKegan Dougal <kegan@matrix.org>2014-08-14 15:21:39 +0100
commit76005c44f7ec4ea28ba0d5eecccfa64f4df6d664 (patch)
tree5f075a3d8536821c489302426d19ed26392b9715 /webclient/app.js
parentSend forbidden codes when doing login attempts. (diff)
downloadsynapse-76005c44f7ec4ea28ba0d5eecccfa64f4df6d664.tar.xz
Added an access token interceptor to check unknown tokens.
Diffstat (limited to 'webclient/app.js')
-rw-r--r--webclient/app.js22
1 files changed, 19 insertions, 3 deletions
diff --git a/webclient/app.js b/webclient/app.js
index 651aeeaa77..f869309449 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', function ($q) {
+            return {
+                responseError: function(rejection) {
+                    console.log("Rejection: " + JSON.stringify(rejection));
+                    if (rejection.status === 403 && "data" in rejection && 
+                            "errcode" in rejection.data && 
+                            rejection.data.errcode === "M_UNKNOWN_TOKEN") {
+                        console.log("TODO: Got a 403 with an unknown token. Logging out.")
+                        // TODO logout
+                    }
+                    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
+    }]);