summaryrefslogtreecommitdiff
path: root/src/store
diff options
context:
space:
mode:
authorYoshie Muranaka <yoshiemuranaka@gmail.com>2020-02-12 22:30:49 +0300
committerYoshie Muranaka <yoshiemuranaka@gmail.com>2020-02-22 00:32:15 +0300
commit183c27548046e12b94354aa598b5bcf956d31103 (patch)
tree4168e439d3554427648b7898a706d8a7aed84e10 /src/store
parentc11d38945b8a51e4181142c2b8852ffcb30338d9 (diff)
downloadwebui-vue-183c27548046e12b94354aa598b5bcf956d31103.tar.xz
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 <yoshiemuranaka@gmail.com> Change-Id: I455beba4f56b8209b1201bbc5ff3f616e960d189
Diffstat (limited to 'src/store')
-rw-r--r--src/store/api.js3
-rw-r--r--src/store/modules/AccessControl/LocalUserMangementStore.js142
2 files changed, 145 insertions, 0 deletions
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;
+ })
+ );
}
}
};