diff --git a/docs-web/src/main/java/com/sismics/docs/rest/resource/UserResource.java b/docs-web/src/main/java/com/sismics/docs/rest/resource/UserResource.java
index ae092942..0fb3b225 100644
--- a/docs-web/src/main/java/com/sismics/docs/rest/resource/UserResource.java
+++ b/docs-web/src/main/java/com/sismics/docs/rest/resource/UserResource.java
@@ -114,7 +114,7 @@ public class UserResource extends BaseResource {
userDao.create(user, principal.getId());
} catch (Exception e) {
if ("AlreadyExistingUsername".equals(e.getMessage())) {
- throw new ServerException("AlreadyExistingUsername", "Login already used", e);
+ throw new ClientException("AlreadyExistingUsername", "Login already used", e);
} else {
throw new ServerException("UnknownError", "Unknown server error", e);
}
diff --git a/docs-web/src/main/webapp/src/app/docs/controller/settings/SettingsGroupEdit.js b/docs-web/src/main/webapp/src/app/docs/controller/settings/SettingsGroupEdit.js
index 3650c480..b3aee57a 100644
--- a/docs-web/src/main/webapp/src/app/docs/controller/settings/SettingsGroupEdit.js
+++ b/docs-web/src/main/webapp/src/app/docs/controller/settings/SettingsGroupEdit.js
@@ -45,6 +45,13 @@ angular.module('docs').controller('SettingsGroupEdit', function($scope, $dialog,
// Go to edit this group to add members
$state.go('settings.group.edit', { name: group.name });
}
+ }, function (e) {
+ if (e.data.type === 'GroupAlreadyExists') {
+ var title = $translate.instant('settings.group.edit.edit_group_failed_title');
+ var msg = $translate.instant('settings.group.edit.edit_group_failed_message');
+ var btns = [{result: 'ok', label: $translate.instant('ok'), cssClass: 'btn-primary'}];
+ $dialog.messageBox(title, msg, btns);
+ }
});
};
diff --git a/docs-web/src/main/webapp/src/app/docs/controller/settings/SettingsUserEdit.js b/docs-web/src/main/webapp/src/app/docs/controller/settings/SettingsUserEdit.js
index 4655e99f..f8231390 100644
--- a/docs-web/src/main/webapp/src/app/docs/controller/settings/SettingsUserEdit.js
+++ b/docs-web/src/main/webapp/src/app/docs/controller/settings/SettingsUserEdit.js
@@ -42,6 +42,13 @@ angular.module('docs').controller('SettingsUserEdit', function($scope, $dialog,
promise.then(function() {
$scope.loadUsers();
$state.go('settings.user');
+ }, function (e) {
+ if (e.data.type === 'AlreadyExistingUsername') {
+ var title = $translate.instant('settings.user.edit.edit_user_failed_title');
+ var msg = $translate.instant('settings.user.edit.edit_user_failed_message');
+ var btns = [{result: 'ok', label: $translate.instant('ok'), cssClass: 'btn-primary'}];
+ $dialog.messageBox(title, msg, btns);
+ }
});
};
diff --git a/docs-web/src/main/webapp/src/locale/en.json b/docs-web/src/main/webapp/src/locale/en.json
index a1de1ca6..536ade57 100644
--- a/docs-web/src/main/webapp/src/locale/en.json
+++ b/docs-web/src/main/webapp/src/locale/en.json
@@ -238,6 +238,8 @@
"edit": {
"delete_user_title": "Delete user",
"delete_user_message": "Do you really want to delete this user? All associated documents, files and tags will be deleted",
+ "edit_user_failed_title": "User already exists",
+ "edit_user_failed_message": "This username is already taken by another user",
"edit_user_title": "Edit \"{{ username }}\"",
"add_user_title": "Add a user",
"username": "Username",
@@ -276,6 +278,8 @@
"edit": {
"delete_group_title": "Delete group",
"delete_group_message": "Do you really want to delete this group?",
+ "edit_group_failed_title": "Group already exists",
+ "edit_group_failed_message": "This group name is already taken by another group",
"edit_group_title": "Edit \"{{ name }}\"",
"add_group_title": "Add a group",
"name": "Name",
diff --git a/docs-web/src/test/java/com/sismics/docs/rest/TestUserResource.java b/docs-web/src/test/java/com/sismics/docs/rest/TestUserResource.java
index e9fe73a5..afbc532d 100644
--- a/docs-web/src/test/java/com/sismics/docs/rest/TestUserResource.java
+++ b/docs-web/src/test/java/com/sismics/docs/rest/TestUserResource.java
@@ -125,7 +125,7 @@ public class TestUserResource extends BaseJerseyTest {
response = target().path("/user").request()
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, adminToken)
.put(Entity.form(form));
- Assert.assertNotSame(Status.OK, Status.fromStatusCode(response.getStatus()));
+ Assert.assertEquals(Status.BAD_REQUEST, Status.fromStatusCode(response.getStatus()));
json = response.readEntity(JsonObject.class);
Assert.assertEquals("AlreadyExistingUsername", json.getString("type"));