From 183c27548046e12b94354aa598b5bcf956d31103 Mon Sep 17 00:00:00 2001 From: Yoshie Muranaka Date: Wed, 12 Feb 2020 11:30:49 -0800 Subject: Add batch actions to local user table - Create TableToolbar component for table batch actions - Added Toast warning type and toast title message translations - Update vue-i18n package to latest v8.15.3 to use improved pluarlization features Signed-off-by: Yoshie Muranaka Change-Id: I455beba4f56b8209b1201bbc5ff3f616e960d189 --- src/store/api.js | 3 + .../AccessControl/LocalUserMangementStore.js | 142 +++++++++++++++++++++ 2 files changed, 145 insertions(+) (limited to 'src/store') diff --git a/src/store/api.js b/src/store/api.js index 0f8c9484..8fdbdd2f 100644 --- a/src/store/api.js +++ b/src/store/api.js @@ -40,5 +40,8 @@ export default { }, all(promises) { return Axios.all(promises); + }, + spread(callback) { + return Axios.spread(callback); } }; diff --git a/src/store/modules/AccessControl/LocalUserMangementStore.js b/src/store/modules/AccessControl/LocalUserMangementStore.js index bc14c734..eb5822e1 100644 --- a/src/store/modules/AccessControl/LocalUserMangementStore.js +++ b/src/store/modules/AccessControl/LocalUserMangementStore.js @@ -1,4 +1,20 @@ import api from '../../api'; +import i18n from '../../../i18n'; + +const getResponseCount = responses => { + let successCount = 0; + let errorCount = 0; + + responses.forEach(response => { + if (response instanceof Error) errorCount++; + else successCount++; + }); + + return { + successCount, + errorCount + }; +}; const LocalUserManagementStore = { namespaced: true, @@ -73,6 +89,132 @@ const LocalUserManagementStore = { console.log(error); throw new Error(`Error deleting user '${username}'.`); }); + }, + async deleteUsers({ dispatch }, users) { + const promises = users.map(({ username }) => { + return api + .delete(`/redfish/v1/AccountService/Accounts/${username}`) + .catch(error => { + console.log(error); + return error; + }); + }); + return await api + .all(promises) + .then(response => { + dispatch('getUsers'); + return response; + }) + .then( + api.spread((...responses) => { + const { successCount, errorCount } = getResponseCount(responses); + let toastMessages = []; + + if (successCount) { + const message = i18n.tc( + 'localUserManagement.toastMessages.successDeleteUsers', + successCount + ); + toastMessages.push({ type: 'success', message }); + } + + if (errorCount) { + const message = i18n.tc( + 'localUserManagement.toastMessages.errorDeleteUsers', + errorCount + ); + toastMessages.push({ type: 'error', message }); + } + + return toastMessages; + }) + ); + }, + async enableUsers({ dispatch }, users) { + const data = { + Enabled: true + }; + const promises = users.map(({ username }) => { + return api + .patch(`/redfish/v1/AccountService/Accounts/${username}`, data) + .catch(error => { + console.log(error); + return error; + }); + }); + return await api + .all(promises) + .then(response => { + dispatch('getUsers'); + return response; + }) + .then( + api.spread((...responses) => { + const { successCount, errorCount } = getResponseCount(responses); + let toastMessages = []; + + if (successCount) { + const message = i18n.tc( + 'localUserManagement.toastMessages.successEnableUsers', + successCount + ); + toastMessages.push({ type: 'success', message }); + } + + if (errorCount) { + const message = i18n.tc( + 'localUserManagement.toastMessages.errorEnableUsers', + errorCount + ); + toastMessages.push({ type: 'error', message }); + } + + return toastMessages; + }) + ); + }, + async disableUsers({ dispatch }, users) { + const data = { + Enabled: false + }; + const promises = users.map(({ username }) => { + return api + .patch(`/redfish/v1/AccountService/Accounts/${username}`, data) + .catch(error => { + console.log(error); + return error; + }); + }); + return await api + .all(promises) + .then(response => { + dispatch('getUsers'); + return response; + }) + .then( + api.spread((...responses) => { + const { successCount, errorCount } = getResponseCount(responses); + let toastMessages = []; + + if (successCount) { + const message = i18n.tc( + 'localUserManagement.toastMessages.successDisableUsers', + successCount + ); + toastMessages.push({ type: 'success', message }); + } + + if (errorCount) { + const message = i18n.tc( + 'localUserManagement.toastMessages.errorDisableUsers', + errorCount + ); + toastMessages.push({ type: 'error', message }); + } + + return toastMessages; + }) + ); } } }; -- cgit v1.2.3