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.
parent
40c998336d
commit
fb93e14e53
|
@ -17,7 +17,7 @@ from twisted.internet import defer
|
|||
|
||||
from sqlite3 import IntegrityError
|
||||
|
||||
from synapse.api.errors import StoreError
|
||||
from synapse.api.errors import StoreError, Codes
|
||||
|
||||
from ._base import SQLBaseStore
|
||||
|
||||
|
@ -73,7 +73,7 @@ class RegistrationStore(SQLBaseStore):
|
|||
"VALUES (?,?,?)",
|
||||
[user_id, password_hash, now])
|
||||
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
|
||||
# since tokens are namespaced based on their user ID
|
||||
|
|
|
@ -55,8 +55,15 @@ angular.module('LoginController', ['matrixService'])
|
|||
// Go to the user's rooms list page
|
||||
$location.path("rooms");
|
||||
},
|
||||
function(reason) {
|
||||
$scope.feedback = "Failure: " + reason;
|
||||
function(error) {
|
||||
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) {
|
||||
if (error.data.errcode === "M_FORBIDDEN") {
|
||||
$scope.login_error_msg = "Incorrect username or password.";
|
||||
if (error.data) {
|
||||
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.";
|
||||
}
|
||||
}
|
||||
);
|
||||
|
|
Loading…
Reference in New Issue