Be more helpful when failing to register/login, stating why (communication error, user in user, wrong credentials, etc). Make the HS send M_USER_IN_USE.

This commit is contained in:
Kegan Dougal 2014-08-14 16:03:04 +01:00
parent 40c998336d
commit fb93e14e53
2 changed files with 18 additions and 6 deletions

View file

@ -17,7 +17,7 @@ from twisted.internet import defer
from sqlite3 import IntegrityError from sqlite3 import IntegrityError
from synapse.api.errors import StoreError from synapse.api.errors import StoreError, Codes
from ._base import SQLBaseStore from ._base import SQLBaseStore
@ -73,7 +73,7 @@ class RegistrationStore(SQLBaseStore):
"VALUES (?,?,?)", "VALUES (?,?,?)",
[user_id, password_hash, now]) [user_id, password_hash, now])
except IntegrityError: except IntegrityError:
raise StoreError(400, "User ID already taken.") raise StoreError(400, "User ID already taken.", errcode=Codes.USER_IN_USE)
# it's possible for this to get a conflict, but only for a single user # it's possible for this to get a conflict, but only for a single user
# since tokens are namespaced based on their user ID # since tokens are namespaced based on their user ID

View file

@ -55,8 +55,15 @@ angular.module('LoginController', ['matrixService'])
// Go to the user's rooms list page // Go to the user's rooms list page
$location.path("rooms"); $location.path("rooms");
}, },
function(reason) { function(error) {
$scope.feedback = "Failure: " + reason; if (error.data) {
if (error.data.errcode === "M_USER_IN_USE") {
$scope.feedback = "Username already taken.";
}
}
else if (error.status === 0) {
$scope.feedback = "Unable to talk to the server.";
}
}); });
}; };
@ -83,8 +90,13 @@ angular.module('LoginController', ['matrixService'])
} }
}, },
function(error) { function(error) {
if (error.data.errcode === "M_FORBIDDEN") { if (error.data) {
$scope.login_error_msg = "Incorrect username or password."; if (error.data.errcode === "M_FORBIDDEN") {
$scope.login_error_msg = "Incorrect username or password.";
}
}
else if (error.status === 0) {
$scope.login_error_msg = "Unable to talk to the server.";
} }
} }
); );