From cf44af00656c9c7edf242a2aed7bd45f7c19a1bb Mon Sep 17 00:00:00 2001 From: Benjamin Gamard Date: Thu, 4 Jan 2018 16:18:06 +0100 Subject: [PATCH] Closes #169 feedback for username/group name already taken --- .../java/com/sismics/docs/rest/resource/UserResource.java | 2 +- .../src/app/docs/controller/settings/SettingsGroupEdit.js | 7 +++++++ .../src/app/docs/controller/settings/SettingsUserEdit.js | 7 +++++++ docs-web/src/main/webapp/src/locale/en.json | 4 ++++ .../test/java/com/sismics/docs/rest/TestUserResource.java | 2 +- 5 files changed, 20 insertions(+), 2 deletions(-) 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"));