diff --git a/webclient/app.js b/webclient/app.js
index f869309449..0b613fa206 100644
--- a/webclient/app.js
+++ b/webclient/app.js
@@ -42,20 +42,20 @@ matrixWebClient.config(['$routeProvider', '$provide', '$httpProvider',
redirectTo: '/rooms'
});
- $provide.factory('AccessTokenInterceptor', function ($q) {
+ $provide.factory('AccessTokenInterceptor', ['$q', '$rootScope',
+ function ($q, $rootScope) {
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
+ console.log("Got a 403 with an unknown token. Logging out.")
+ $rootScope.$broadcast("M_UNKNOWN_TOKEN");
}
return $q.reject(rejection);
}
};
- });
+ }]);
$httpProvider.interceptors.push('AccessTokenInterceptor');
}]);
diff --git a/webclient/components/matrix/matrix-service.js b/webclient/components/matrix/matrix-service.js
index 81ccdc2cc0..132c996f7a 100644
--- a/webclient/components/matrix/matrix-service.js
+++ b/webclient/components/matrix/matrix-service.js
@@ -49,32 +49,13 @@ angular.module('matrixService', [])
if (path.indexOf(prefixPath) !== 0) {
path = prefixPath + path;
}
- // Do not directly return the $http instance but return a promise
- // with enriched or cleaned information
- var deferred = $q.defer();
- $http({
+ return $http({
method: method,
url: baseUrl + path,
params: params,
data: data,
headers: headers
})
- .success(function(data, status, headers, config) {
- deferred.resolve(data, status, headers, config);
- })
- .error(function(data, status, headers, config) {
- // Enrich the error callback with an human readable error reason
- var reason = data.error;
- if (!data.error) {
- reason = JSON.stringify(data);
- }
- 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;
};
diff --git a/webclient/login/login-controller.js b/webclient/login/login-controller.js
index fa91bf4253..c519f7698c 100644
--- a/webclient/login/login-controller.js
+++ b/webclient/login/login-controller.js
@@ -39,14 +39,13 @@ angular.module('LoginController', ['matrixService'])
}
matrixService.register($scope.account.desired_user_name, $scope.account.pwd1).then(
- function(data) {
+ function(response) {
$scope.feedback = "Success";
-
// Update the current config
var config = matrixService.config();
angular.extend(config, {
- access_token: data.access_token,
- user_id: data.user_id
+ access_token: response.data.access_token,
+ user_id: response.data.user_id
});
matrixService.setConfig(config);
@@ -74,7 +73,7 @@ angular.module('LoginController', ['matrixService'])
matrixService.setConfig({
homeserver: $scope.account.homeserver,
user_id: $scope.account.user_id,
- access_token: response.access_token
+ access_token: response.data.access_token
});
matrixService.saveConfig();
$location.path("rooms");
@@ -82,6 +81,11 @@ angular.module('LoginController', ['matrixService'])
else {
$scope.feedback = "Failed to login: " + JSON.stringify(response);
}
+ },
+ function(error) {
+ if (error.data.errcode === "M_FORBIDDEN") {
+ $scope.login_error_msg = "Incorrect username or password.";
+ }
}
);
};
diff --git a/webclient/login/login.html b/webclient/login/login.html
index 508ff5e4bf..f02dde89a6 100644
--- a/webclient/login/login.html
+++ b/webclient/login/login.html
@@ -22,6 +22,7 @@
<h3>Got an account?</h3>
<form novalidate>
<!-- Login with an registered user -->
+ <div>{{ login_error_msg }} </div>
<div>
<input id="user_id" size="70" type="text" auto-focus ng-model="account.user_id" placeholder="User ID (ex:@bob:localhost)"/>
<br />
|