From 2897447b94edf35002f985d4055a4699bb5333d9 Mon Sep 17 00:00:00 2001 From: Sivaprabu Ganesan Date: Thu, 5 Jan 2023 18:52:51 +0530 Subject: Enhanced User Management page error message Description 1: When WebUI creates the user with an already existing username the error message will display the exact failure reason. Tested: Step 1: Login to webUI and navigate to user management page Step 2: Create new user with username "testUser1" Step 3: Create another user with same username "testUser1" Step 4: WEB UI will through the error message as "Username 'testuser1' already exists." Description 2: User can able to disable and change the root user via WebUI Now restricted to disable the root user and changing the root user privilege. Tested: Step 1: Login to Web UI with root user Step 2: Navigate to User management page Step 3: Try to modify the root user's details Step 4: WebUI won't allow to disable the user, username change and privilege change Step 5: Login Web UI with non-root user Step 6: Web UI won't allow to modify or delete the root user's details Change-Id: I0e38215b51fb058984664ec38ae9613e18043ed7 Signed-off-by: Sivaprabu Ganesan --- src/locales/en-US.json | 1 + src/locales/ru-RU.json | 1 + .../SecurityAndAccess/UserManagementStore.js | 21 +++++++++++++++++++-- .../SecurityAndAccess/UserManagement/ModalUser.vue | 4 +++- .../UserManagement/UserManagement.vue | 16 ++++++++++++++-- 5 files changed, 38 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/locales/en-US.json b/src/locales/en-US.json index ffb6a2ea..0796c67a 100644 --- a/src/locales/en-US.json +++ b/src/locales/en-US.json @@ -581,6 +581,7 @@ "errorBatchDisable": "Error disabling %{count} user. | Error disabling %{count} users.", "errorBatchEnable": "Error enabling %{count} user. | Error enabling %{count} users.", "errorCreateUser": "Error creating user '%{username}'.", + "errorAlreadyExistUser": "Username '%{username}' already exists.", "errorDeleteUser": "Error deleting user '%{username}'.", "errorLoadAccountSettings": "Error loading account settings", "errorLoadUsers": "Error loading users.", diff --git a/src/locales/ru-RU.json b/src/locales/ru-RU.json index 8993b82d..477cde74 100644 --- a/src/locales/ru-RU.json +++ b/src/locales/ru-RU.json @@ -581,6 +581,7 @@ "errorBatchDisable": "Ошибка отключения %{count} пользователя. | Ошибка отключения %{count} пользователей.", "errorBatchEnable": "Ошибка включения %{count} пользователя. | Ошибка включения %{count} пользователей.", "errorCreateUser": "Ошибка создания пользователя '%{username}'.", + "errorAlreadyExistUser": "имя пользователя '%{username}' уже существует.", "errorDeleteUser": "Ошибка удаления пользователя '%{username}'.", "errorLoadAccountSettings": "Ошибка загрузки настроек учётной записи", "errorLoadUsers": "Ошибка загрузки учётных записей пользователей.", diff --git a/src/store/modules/SecurityAndAccess/UserManagementStore.js b/src/store/modules/SecurityAndAccess/UserManagementStore.js index 362f3f64..78dbd433 100644 --- a/src/store/modules/SecurityAndAccess/UserManagementStore.js +++ b/src/store/modules/SecurityAndAccess/UserManagementStore.js @@ -113,10 +113,27 @@ const UserManagementStore = { }) ) .catch((error) => { - console.log(error); - const message = i18n.t('pageUserManagement.toast.errorCreateUser', { + let message = i18n.t('pageUserManagement.toast.errorCreateUser', { username, }); + if (error.response && error.response.data) { + if (error.response.data['UserName@Message.ExtendedInfo']) { + let obj = error.response.data['UserName@Message.ExtendedInfo']; + for (var key in obj) { + if (obj[key].Message) { + let msg = obj[key].Message; + if (msg.indexOf('already exists') != -1) { + message = i18n.t( + 'pageUserManagement.toast.errorAlreadyExistUser', + { + username, + } + ); + } + } + } + } + } throw new Error(message); }); }, diff --git a/src/views/SecurityAndAccess/UserManagement/ModalUser.vue b/src/views/SecurityAndAccess/UserManagement/ModalUser.vue index 0f8757ce..5a1dc61a 100644 --- a/src/views/SecurityAndAccess/UserManagement/ModalUser.vue +++ b/src/views/SecurityAndAccess/UserManagement/ModalUser.vue @@ -56,6 +56,7 @@ name="user-status" data-test-id="userManagement-radioButton-statusDisabled" :value="false" + :disabled="!newUser && originalUsername === disabled" @input="$v.form.status.$touch()" > {{ $t('global.status.disabled') }} @@ -81,7 +82,7 @@ aria-describedby="username-help-block" data-test-id="userManagement-input-username" :state="getValidationState($v.form.username)" - :disabled="!newUser && originalUsername === 'root'" + :disabled="!newUser && originalUsername === disabled" @input="$v.form.username.$touch()" /> @@ -259,6 +260,7 @@ export default { passwordConfirmation: '', manualUnlock: false, }, + disabled: this.$store.getters['global/username'], }; }, computed: { diff --git a/src/views/SecurityAndAccess/UserManagement/UserManagement.vue b/src/views/SecurityAndAccess/UserManagement/UserManagement.vue index c6c556c8..b17be86e 100644 --- a/src/views/SecurityAndAccess/UserManagement/UserManagement.vue +++ b/src/views/SecurityAndAccess/UserManagement/UserManagement.vue @@ -217,12 +217,17 @@ export default { actions: [ { value: 'edit', - enabled: true, + enabled: this.editEnable(user), title: this.$t('pageUserManagement.editUser'), }, { value: 'delete', - enabled: user.UserName === 'root' ? false : true, + enabled: + user.UserName === this.$store.getters['global/username'] + ? false + : true && user.UserName === 'root' + ? false + : true, title: this.$tc('pageUserManagement.deleteUser'), }, ], @@ -247,6 +252,13 @@ export default { this.$store.dispatch('userManagement/getAccountRoles'); }, methods: { + editEnable(user) { + if ('root' === this.$store.getters['global/username']) { + return true; + } else { + return user.UserName === 'root' ? false : true; + } + }, initModalUser(user) { this.activeUser = user; this.$bvModal.show('modal-user'); -- cgit v1.2.3