blob: cfe04a6f9bba91420791246d8344c2e8fdb22913 [file] [log] [blame]
Derick Montaguea2988f42020-01-17 13:46:30 -06001<template>
Yoshie Muranaka3111b6f2020-04-21 19:48:38 -07002 <b-container fluid="xl">
Derick Montague09e45cd2020-01-23 15:45:57 -06003 <page-title />
Yoshie Muranaka35080ac2020-01-17 15:38:57 -06004 <b-row>
Yoshie Muranaka74f86872020-02-10 12:28:37 -08005 <b-col xl="9" class="text-right">
Yoshie Muranaka4b0fc1d2020-01-06 07:36:16 -08006 <b-button variant="link" @click="initModalSettings">
Yoshie Muranaka996d2d52019-12-30 09:06:45 -08007 <icon-settings />
Sandeepa Singhb4406162021-07-26 15:05:39 +05308 {{ $t('pageUserManagement.accountPolicySettings') }}
Yoshie Muranaka463a5702019-12-04 09:09:36 -08009 </b-button>
Dixsie Wolmersfe1e6582020-07-15 11:18:12 -050010 <b-button
11 variant="primary"
Sandeepa Singhb4406162021-07-26 15:05:39 +053012 data-test-id="userManagement-button-addUser"
Dixsie Wolmersfe1e6582020-07-15 11:18:12 -050013 @click="initModalUser(null)"
14 >
Yoshie Muranaka996d2d52019-12-30 09:06:45 -080015 <icon-add />
Sandeepa Singhb4406162021-07-26 15:05:39 +053016 {{ $t('pageUserManagement.addUser') }}
Yoshie Muranaka463a5702019-12-04 09:09:36 -080017 </b-button>
Yoshie Muranaka35080ac2020-01-17 15:38:57 -060018 </b-col>
19 </b-row>
20 <b-row>
Yoshie Muranaka74f86872020-02-10 12:28:37 -080021 <b-col xl="9">
Yoshie Muranaka183c2752020-02-12 11:30:49 -080022 <table-toolbar
23 ref="toolbar"
24 :selected-items-count="selectedRows.length"
25 :actions="tableToolbarActions"
Sukanya Pandeyedb8a772020-10-29 11:33:42 +053026 @clear-selected="clearSelectedRows($refs.table)"
27 @batch-action="onBatchAction"
Yoshie Muranaka183c2752020-02-12 11:30:49 -080028 />
29 <b-table
30 ref="table"
SurenNeware5e25e282020-07-08 15:57:23 +053031 responsive="md"
Yoshie Muranaka183c2752020-02-12 11:30:49 -080032 selectable
SurenNeware307382e2020-07-27 20:45:14 +053033 show-empty
Yoshie Muranaka183c2752020-02-12 11:30:49 -080034 no-select-on-click
Sukanya Pandeyfde429e2020-09-14 20:48:39 +053035 hover
Kenneth Fullbright41057852021-12-27 16:19:37 -060036 :busy="isBusy"
Yoshie Muranaka183c2752020-02-12 11:30:49 -080037 :fields="fields"
38 :items="tableItems"
SurenNeware307382e2020-07-27 20:45:14 +053039 :empty-text="$t('global.table.emptyMessage')"
Yoshie Muranaka183c2752020-02-12 11:30:49 -080040 @row-selected="onRowSelected($event, tableItems.length)"
41 >
42 <!-- Checkbox column -->
Derick Montague602e98a2020-10-21 16:20:00 -050043 <template #head(checkbox)>
Yoshie Muranaka183c2752020-02-12 11:30:49 -080044 <b-form-checkbox
45 v-model="tableHeaderCheckboxModel"
Sandeepa Singhb4406162021-07-26 15:05:39 +053046 data-test-id="userManagement-checkbox-tableHeaderCheckbox"
Yoshie Muranaka183c2752020-02-12 11:30:49 -080047 :indeterminate="tableHeaderCheckboxIndeterminate"
48 @change="onChangeHeaderCheckbox($refs.table)"
Dixsie Wolmersc42ad712020-11-19 17:29:24 -060049 >
50 <span class="sr-only">{{ $t('global.table.selectAll') }}</span>
51 </b-form-checkbox>
Yoshie Muranaka183c2752020-02-12 11:30:49 -080052 </template>
Derick Montague602e98a2020-10-21 16:20:00 -050053 <template #cell(checkbox)="row">
Yoshie Muranaka183c2752020-02-12 11:30:49 -080054 <b-form-checkbox
55 v-model="row.rowSelected"
Sandeepa Singhb4406162021-07-26 15:05:39 +053056 data-test-id="userManagement-checkbox-toggleSelectRow"
Yoshie Muranaka183c2752020-02-12 11:30:49 -080057 @change="toggleSelectRow($refs.table, row.index)"
Dixsie Wolmersc42ad712020-11-19 17:29:24 -060058 >
59 <span class="sr-only">{{ $t('global.table.selectItem') }}</span>
60 </b-form-checkbox>
Yoshie Muranaka183c2752020-02-12 11:30:49 -080061 </template>
62
63 <!-- table actions column -->
Derick Montague602e98a2020-10-21 16:20:00 -050064 <template #cell(actions)="{ item }">
Yoshie Muranaka0e893f02020-02-18 13:39:45 -080065 <table-row-action
66 v-for="(action, index) in item.actions"
67 :key="index"
68 :value="action.value"
69 :enabled="action.enabled"
Yoshie Muranakaeaa04802020-02-28 13:21:27 -080070 :title="action.title"
Sukanya Pandeyedb8a772020-10-29 11:33:42 +053071 @click-table-action="onTableRowAction($event, item)"
Yoshie Muranaka35080ac2020-01-17 15:38:57 -060072 >
Derick Montague602e98a2020-10-21 16:20:00 -050073 <template #icon>
Dixsie Wolmersfe1e6582020-07-15 11:18:12 -050074 <icon-edit
75 v-if="action.value === 'edit'"
Sandeepa Singhb4406162021-07-26 15:05:39 +053076 :data-test-id="`userManagement-tableRowAction-edit-${index}`"
Dixsie Wolmersfe1e6582020-07-15 11:18:12 -050077 />
78 <icon-trashcan
79 v-if="action.value === 'delete'"
Sandeepa Singhb4406162021-07-26 15:05:39 +053080 :data-test-id="`userManagement-tableRowAction-delete-${index}`"
Dixsie Wolmersfe1e6582020-07-15 11:18:12 -050081 />
Yoshie Muranaka0e893f02020-02-18 13:39:45 -080082 </template>
83 </table-row-action>
Yoshie Muranaka35080ac2020-01-17 15:38:57 -060084 </template>
85 </b-table>
86 </b-col>
87 </b-row>
88 <b-row>
Yoshie Muranaka74f86872020-02-10 12:28:37 -080089 <b-col xl="8">
Dixsie Wolmersfe1e6582020-07-15 11:18:12 -050090 <b-button
91 v-b-toggle.collapse-role-table
Sandeepa Singhb4406162021-07-26 15:05:39 +053092 data-test-id="userManagement-button-viewPrivilegeRoleDescriptions"
Dixsie Wolmersfe1e6582020-07-15 11:18:12 -050093 variant="link"
94 class="mt-3"
95 >
Yoshie Muranaka4b0fc1d2020-01-06 07:36:16 -080096 <icon-chevron />
Sandeepa Singhb4406162021-07-26 15:05:39 +053097 {{ $t('pageUserManagement.viewPrivilegeRoleDescriptions') }}
Yoshie Muranaka463a5702019-12-04 09:09:36 -080098 </b-button>
Yoshie Muranaka35080ac2020-01-17 15:38:57 -060099 <b-collapse id="collapse-role-table" class="mt-3">
Yoshie Muranaka463a5702019-12-04 09:09:36 -0800100 <table-roles />
Yoshie Muranaka35080ac2020-01-17 15:38:57 -0600101 </b-collapse>
102 </b-col>
103 </b-row>
104 <!-- Modals -->
kirankumarb076ad19aa2023-03-21 19:19:02 +0530105 <modal-settings :settings="setting" @ok="saveAccountSettings" />
Yoshie Muranaka52b02232020-02-20 08:00:45 -0800106 <modal-user
107 :user="activeUser"
108 :password-requirements="passwordRequirements"
109 @ok="saveUser"
Yoshie Muranaka791622b2020-04-17 13:55:16 -0700110 @hidden="activeUser = null"
Yoshie Muranaka52b02232020-02-20 08:00:45 -0800111 />
Yoshie Muranaka35080ac2020-01-17 15:38:57 -0600112 </b-container>
Derick Montaguea2988f42020-01-17 13:46:30 -0600113</template>
Yoshie Muranaka35080ac2020-01-17 15:38:57 -0600114
115<script>
Derick Montaguee2fd1562019-12-20 13:26:53 -0600116import IconTrashcan from '@carbon/icons-vue/es/trash-can/20';
117import IconEdit from '@carbon/icons-vue/es/edit/20';
118import IconAdd from '@carbon/icons-vue/es/add--alt/20';
119import IconSettings from '@carbon/icons-vue/es/settings/20';
Yoshie Muranaka4b0fc1d2020-01-06 07:36:16 -0800120import IconChevron from '@carbon/icons-vue/es/chevron--up/20';
Yoshie Muranaka463a5702019-12-04 09:09:36 -0800121
Derick Montaguee2fd1562019-12-20 13:26:53 -0600122import ModalUser from './ModalUser';
123import ModalSettings from './ModalSettings';
SurenNeware5e25e282020-07-08 15:57:23 +0530124import PageTitle from '@/components/Global/PageTitle';
Yoshie Muranaka183c2752020-02-12 11:30:49 -0800125import TableRoles from './TableRoles';
SurenNeware5e25e282020-07-08 15:57:23 +0530126import TableToolbar from '@/components/Global/TableToolbar';
127import TableRowAction from '@/components/Global/TableRowAction';
Yoshie Muranaka183c2752020-02-12 11:30:49 -0800128
SurenNewareba91c492020-10-27 14:18:54 +0530129import BVTableSelectableMixin, {
130 selectedRows,
131 tableHeaderCheckboxModel,
132 tableHeaderCheckboxIndeterminate,
133} from '@/components/Mixins/BVTableSelectableMixin';
SurenNeware5e25e282020-07-08 15:57:23 +0530134import BVToastMixin from '@/components/Mixins/BVToastMixin';
Yoshie Muranaka346be2a2020-04-28 11:12:14 -0700135import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin';
Surya Vde23ea22024-07-11 15:19:46 +0530136import { useI18n } from 'vue-i18n';
137import i18n from '@/i18n';
Yoshie Muranaka35080ac2020-01-17 15:38:57 -0600138
139export default {
Sandeepa Singhb4406162021-07-26 15:05:39 +0530140 name: 'UserManagement',
Yoshie Muranaka35080ac2020-01-17 15:38:57 -0600141 components: {
Yoshie Muranaka463a5702019-12-04 09:09:36 -0800142 IconAdd,
Yoshie Muranaka4b0fc1d2020-01-06 07:36:16 -0800143 IconChevron,
Yoshie Muranaka463a5702019-12-04 09:09:36 -0800144 IconEdit,
145 IconSettings,
146 IconTrashcan,
147 ModalSettings,
148 ModalUser,
Yoshie Muranaka183c2752020-02-12 11:30:49 -0800149 PageTitle,
Yoshie Muranaka8d129102019-12-19 09:51:55 -0800150 TableRoles,
Yoshie Muranaka0e893f02020-02-18 13:39:45 -0800151 TableRowAction,
Derick Montague602e98a2020-10-21 16:20:00 -0500152 TableToolbar,
Yoshie Muranaka463a5702019-12-04 09:09:36 -0800153 },
Yoshie Muranaka346be2a2020-04-28 11:12:14 -0700154 mixins: [BVTableSelectableMixin, BVToastMixin, LoadingBarMixin],
Derick Montague602e98a2020-10-21 16:20:00 -0500155 beforeRouteLeave(to, from, next) {
156 this.hideLoader();
157 next();
158 },
Yoshie Muranaka463a5702019-12-04 09:09:36 -0800159 data() {
160 return {
Surya Vde23ea22024-07-11 15:19:46 +0530161 $t: useI18n().t,
Kenneth Fullbright41057852021-12-27 16:19:37 -0600162 isBusy: true,
Yoshie Muranaka463a5702019-12-04 09:09:36 -0800163 activeUser: null,
kirankumarb076ad19aa2023-03-21 19:19:02 +0530164 setting: {},
Yoshie Muranaka4b0fc1d2020-01-06 07:36:16 -0800165 fields: [
Yoshie Muranaka183c2752020-02-12 11:30:49 -0800166 {
Derick Montague602e98a2020-10-21 16:20:00 -0500167 key: 'checkbox',
Yoshie Muranaka183c2752020-02-12 11:30:49 -0800168 },
Yoshie Muranakaeaa04802020-02-28 13:21:27 -0800169 {
170 key: 'username',
Surya Vde23ea22024-07-11 15:19:46 +0530171 label: i18n.global.t('pageUserManagement.table.username'),
Yoshie Muranakaeaa04802020-02-28 13:21:27 -0800172 },
173 {
174 key: 'privilege',
Surya Vde23ea22024-07-11 15:19:46 +0530175 label: i18n.global.t('pageUserManagement.table.privilege'),
Yoshie Muranakaeaa04802020-02-28 13:21:27 -0800176 },
177 {
178 key: 'status',
Surya Vde23ea22024-07-11 15:19:46 +0530179 label: i18n.global.t('pageUserManagement.table.status'),
Yoshie Muranakaeaa04802020-02-28 13:21:27 -0800180 },
Yoshie Muranaka4b0fc1d2020-01-06 07:36:16 -0800181 {
182 key: 'actions',
183 label: '',
Derick Montague602e98a2020-10-21 16:20:00 -0500184 tdClass: 'text-right text-nowrap',
185 },
Yoshie Muranaka183c2752020-02-12 11:30:49 -0800186 ],
187 tableToolbarActions: [
188 {
189 value: 'delete',
Surya Vde23ea22024-07-11 15:19:46 +0530190 label: i18n.global.t('global.action.delete'),
Yoshie Muranaka183c2752020-02-12 11:30:49 -0800191 },
192 {
193 value: 'enable',
Surya Vde23ea22024-07-11 15:19:46 +0530194 label: i18n.global.t('global.action.enable'),
Yoshie Muranaka183c2752020-02-12 11:30:49 -0800195 },
196 {
197 value: 'disable',
Surya Vde23ea22024-07-11 15:19:46 +0530198 label: i18n.global.t('global.action.disable'),
Derick Montague602e98a2020-10-21 16:20:00 -0500199 },
200 ],
SurenNewareba91c492020-10-27 14:18:54 +0530201 selectedRows: selectedRows,
202 tableHeaderCheckboxModel: tableHeaderCheckboxModel,
203 tableHeaderCheckboxIndeterminate: tableHeaderCheckboxIndeterminate,
Yoshie Muranaka463a5702019-12-04 09:09:36 -0800204 };
Yoshie Muranaka35080ac2020-01-17 15:38:57 -0600205 },
Yoshie Muranaka35080ac2020-01-17 15:38:57 -0600206 computed: {
207 allUsers() {
Sandeepa Singhb4406162021-07-26 15:05:39 +0530208 return this.$store.getters['userManagement/allUsers'];
Yoshie Muranaka35080ac2020-01-17 15:38:57 -0600209 },
210 tableItems() {
211 // transform user data to table data
Derick Montague602e98a2020-10-21 16:20:00 -0500212 return this.allUsers.map((user) => {
Yoshie Muranaka35080ac2020-01-17 15:38:57 -0600213 return {
214 username: user.UserName,
215 privilege: user.RoleId,
216 status: user.Locked
Derick Montaguee2fd1562019-12-20 13:26:53 -0600217 ? 'Locked'
Yoshie Muranaka35080ac2020-01-17 15:38:57 -0600218 : user.Enabled
Ed Tanous81323992024-02-27 11:26:24 -0800219 ? 'Enabled'
220 : 'Disabled',
Yoshie Muranaka0e893f02020-02-18 13:39:45 -0800221 actions: [
Yoshie Muranakaeaa04802020-02-28 13:21:27 -0800222 {
223 value: 'edit',
Sivaprabu Ganesan28974472023-01-05 18:52:51 +0530224 enabled: this.editEnable(user),
Surya Vde23ea22024-07-11 15:19:46 +0530225 title: i18n.global.t('pageUserManagement.editUser'),
Yoshie Muranakaeaa04802020-02-28 13:21:27 -0800226 },
Yoshie Muranaka0e893f02020-02-18 13:39:45 -0800227 {
228 value: 'delete',
Sivaprabu Ganesan28974472023-01-05 18:52:51 +0530229 enabled:
230 user.UserName === this.$store.getters['global/username']
231 ? false
232 : true && user.UserName === 'root'
Ed Tanous81323992024-02-27 11:26:24 -0800233 ? false
234 : true,
Surya Vde23ea22024-07-11 15:19:46 +0530235 title: i18n.global.t('pageUserManagement.deleteUser'),
Derick Montague602e98a2020-10-21 16:20:00 -0500236 },
Yoshie Muranaka0e893f02020-02-18 13:39:45 -0800237 ],
Derick Montague602e98a2020-10-21 16:20:00 -0500238 ...user,
Yoshie Muranaka35080ac2020-01-17 15:38:57 -0600239 };
240 });
Yoshie Muranaka52b02232020-02-20 08:00:45 -0800241 },
242 settings() {
Sandeepa Singhb4406162021-07-26 15:05:39 +0530243 return this.$store.getters['userManagement/accountSettings'];
Yoshie Muranaka52b02232020-02-20 08:00:45 -0800244 },
245 passwordRequirements() {
Sandeepa Singhb4406162021-07-26 15:05:39 +0530246 return this.$store.getters['userManagement/accountPasswordRequirements'];
Derick Montague602e98a2020-10-21 16:20:00 -0500247 },
Yoshie Muranaka35080ac2020-01-17 15:38:57 -0600248 },
Derick Montague09e45cd2020-01-23 15:45:57 -0600249 created() {
Yoshie Muranaka346be2a2020-04-28 11:12:14 -0700250 this.startLoader();
Kenneth Fullbright41057852021-12-27 16:19:37 -0600251 this.$store.dispatch('userManagement/getUsers').finally(() => {
252 this.endLoader();
253 this.isBusy = false;
254 });
Sandeepa Singhb4406162021-07-26 15:05:39 +0530255 this.$store.dispatch('userManagement/getAccountSettings');
256 this.$store.dispatch('userManagement/getAccountRoles');
Derick Montague09e45cd2020-01-23 15:45:57 -0600257 },
Yoshie Muranaka35080ac2020-01-17 15:38:57 -0600258 methods: {
Sivaprabu Ganesan28974472023-01-05 18:52:51 +0530259 editEnable(user) {
260 if ('root' === this.$store.getters['global/username']) {
261 return true;
262 } else {
263 return user.UserName === 'root' ? false : true;
264 }
265 },
Yoshie Muranaka463a5702019-12-04 09:09:36 -0800266 initModalUser(user) {
267 this.activeUser = user;
Derick Montaguee2fd1562019-12-20 13:26:53 -0600268 this.$bvModal.show('modal-user');
Yoshie Muranaka463a5702019-12-04 09:09:36 -0800269 },
270 initModalDelete(user) {
271 this.$bvModal
272 .msgBoxConfirm(
Surya Vde23ea22024-07-11 15:19:46 +0530273 i18n.global.t('pageUserManagement.modal.deleteConfirmMessage', {
Derick Montague602e98a2020-10-21 16:20:00 -0500274 user: user.username,
Yoshie Muranakaeaa04802020-02-28 13:21:27 -0800275 }),
Yoshie Muranaka463a5702019-12-04 09:09:36 -0800276 {
Surya Vde23ea22024-07-11 15:19:46 +0530277 title: i18n.global.t('pageUserManagement.deleteUser'),
278 okTitle: i18n.global.t('pageUserManagement.deleteUser'),
279 cancelTitle: i18n.global.t('global.action.cancel'),
Paul Fertserd1ef18e2024-04-06 08:04:14 +0000280 autoFocusButton: 'ok',
Ed Tanous81323992024-02-27 11:26:24 -0800281 },
Yoshie Muranaka463a5702019-12-04 09:09:36 -0800282 )
Derick Montague602e98a2020-10-21 16:20:00 -0500283 .then((deleteConfirmed) => {
Yoshie Muranaka463a5702019-12-04 09:09:36 -0800284 if (deleteConfirmed) {
285 this.deleteUser(user);
286 }
287 });
288 },
289 initModalSettings() {
kirankumarb076ad19aa2023-03-21 19:19:02 +0530290 this.setting = this.settings;
Yoshie Muranaka1b1c1002020-02-20 10:18:36 -0800291 this.$bvModal.show('modal-settings');
Yoshie Muranaka463a5702019-12-04 09:09:36 -0800292 },
Yoshie Muranaka4b0fc1d2020-01-06 07:36:16 -0800293 saveUser({ isNewUser, userData }) {
Yoshie Muranaka346be2a2020-04-28 11:12:14 -0700294 this.startLoader();
Yoshie Muranaka4b0fc1d2020-01-06 07:36:16 -0800295 if (isNewUser) {
Yoshie Muranaka0fc91e72020-02-05 11:23:06 -0800296 this.$store
Sandeepa Singhb4406162021-07-26 15:05:39 +0530297 .dispatch('userManagement/createUser', userData)
Derick Montague602e98a2020-10-21 16:20:00 -0500298 .then((success) => this.successToast(success))
Yoshie Muranaka346be2a2020-04-28 11:12:14 -0700299 .catch(({ message }) => this.errorToast(message))
300 .finally(() => this.endLoader());
Yoshie Muranaka463a5702019-12-04 09:09:36 -0800301 } else {
Yoshie Muranaka0fc91e72020-02-05 11:23:06 -0800302 this.$store
Sandeepa Singhb4406162021-07-26 15:05:39 +0530303 .dispatch('userManagement/updateUser', userData)
Derick Montague602e98a2020-10-21 16:20:00 -0500304 .then((success) => this.successToast(success))
Yoshie Muranaka346be2a2020-04-28 11:12:14 -0700305 .catch(({ message }) => this.errorToast(message))
306 .finally(() => this.endLoader());
Yoshie Muranaka463a5702019-12-04 09:09:36 -0800307 }
308 },
309 deleteUser({ username }) {
Yoshie Muranaka346be2a2020-04-28 11:12:14 -0700310 this.startLoader();
Yoshie Muranaka0fc91e72020-02-05 11:23:06 -0800311 this.$store
Sandeepa Singhb4406162021-07-26 15:05:39 +0530312 .dispatch('userManagement/deleteUser', username)
Derick Montague602e98a2020-10-21 16:20:00 -0500313 .then((success) => this.successToast(success))
Yoshie Muranaka346be2a2020-04-28 11:12:14 -0700314 .catch(({ message }) => this.errorToast(message))
315 .finally(() => this.endLoader());
Yoshie Muranaka183c2752020-02-12 11:30:49 -0800316 },
317 onBatchAction(action) {
318 switch (action) {
319 case 'delete':
Yoshie Muranaka29321652020-05-04 10:52:36 -0700320 this.$bvModal
321 .msgBoxConfirm(
Surya Vde23ea22024-07-11 15:19:46 +0530322 i18n.global.t(
Sandeepa Singhb4406162021-07-26 15:05:39 +0530323 'pageUserManagement.modal.batchDeleteConfirmMessage',
Ed Tanous81323992024-02-27 11:26:24 -0800324 this.selectedRows.length,
Yoshie Muranaka29321652020-05-04 10:52:36 -0700325 ),
326 {
Surya Vde23ea22024-07-11 15:19:46 +0530327 title: i18n.global.t(
Sandeepa Singhb4406162021-07-26 15:05:39 +0530328 'pageUserManagement.deleteUser',
Ed Tanous81323992024-02-27 11:26:24 -0800329 this.selectedRows.length,
Yoshie Muranaka29321652020-05-04 10:52:36 -0700330 ),
Surya Vde23ea22024-07-11 15:19:46 +0530331 okTitle: i18n.global.t(
Sandeepa Singhb4406162021-07-26 15:05:39 +0530332 'pageUserManagement.deleteUser',
Ed Tanous81323992024-02-27 11:26:24 -0800333 this.selectedRows.length,
Derick Montague602e98a2020-10-21 16:20:00 -0500334 ),
Surya Vde23ea22024-07-11 15:19:46 +0530335 cancelTitle: i18n.global.t('global.action.cancel'),
Paul Fertserd1ef18e2024-04-06 08:04:14 +0000336 autoFocusButton: 'ok',
Ed Tanous81323992024-02-27 11:26:24 -0800337 },
Yoshie Muranaka29321652020-05-04 10:52:36 -0700338 )
Derick Montague602e98a2020-10-21 16:20:00 -0500339 .then((deleteConfirmed) => {
Yoshie Muranaka29321652020-05-04 10:52:36 -0700340 if (deleteConfirmed) {
Yoshie Muranaka8e4b5c32020-05-27 14:10:52 -0700341 this.startLoader();
Yoshie Muranaka29321652020-05-04 10:52:36 -0700342 this.$store
Sandeepa Singhb4406162021-07-26 15:05:39 +0530343 .dispatch('userManagement/deleteUsers', this.selectedRows)
Derick Montague602e98a2020-10-21 16:20:00 -0500344 .then((messages) => {
Yoshie Muranaka29321652020-05-04 10:52:36 -0700345 messages.forEach(({ type, message }) => {
346 if (type === 'success') this.successToast(message);
347 if (type === 'error') this.errorToast(message);
348 });
349 })
350 .finally(() => this.endLoader());
351 }
352 });
Yoshie Muranaka183c2752020-02-12 11:30:49 -0800353 break;
354 case 'enable':
Yoshie Muranaka8e4b5c32020-05-27 14:10:52 -0700355 this.startLoader();
Yoshie Muranaka183c2752020-02-12 11:30:49 -0800356 this.$store
Sandeepa Singhb4406162021-07-26 15:05:39 +0530357 .dispatch('userManagement/enableUsers', this.selectedRows)
Derick Montague602e98a2020-10-21 16:20:00 -0500358 .then((messages) => {
Yoshie Muranaka183c2752020-02-12 11:30:49 -0800359 messages.forEach(({ type, message }) => {
360 if (type === 'success') this.successToast(message);
361 if (type === 'error') this.errorToast(message);
362 });
Yoshie Muranaka346be2a2020-04-28 11:12:14 -0700363 })
364 .finally(() => this.endLoader());
Yoshie Muranaka183c2752020-02-12 11:30:49 -0800365 break;
366 case 'disable':
Farah Rasheedb2acbca2024-07-08 10:05:37 -0500367 this.$bvModal
368 .msgBoxConfirm(
Surya Venkatesan825059a2024-10-04 19:40:42 +0530369 i18n.global.t(
Farah Rasheedb2acbca2024-07-08 10:05:37 -0500370 'pageUserManagement.modal.batchDisableConfirmMessage',
371 this.selectedRows.length,
372 ),
373 {
Surya Venkatesan825059a2024-10-04 19:40:42 +0530374 title: i18n.global.t(
Farah Rasheedb2acbca2024-07-08 10:05:37 -0500375 'pageUserManagement.disableUser',
376 this.selectedRows.length,
377 ),
Surya Venkatesan825059a2024-10-04 19:40:42 +0530378 okTitle: i18n.global.t(
Farah Rasheedb2acbca2024-07-08 10:05:37 -0500379 'pageUserManagement.disableUser',
380 this.selectedRows.length,
381 ),
Surya Venkatesan825059a2024-10-04 19:40:42 +0530382 cancelTitle: i18n.global.t('global.action.cancel'),
Farah Rasheedb2acbca2024-07-08 10:05:37 -0500383 autoFocusButton: 'ok',
384 },
385 )
386 .then((disableConfirmed) => {
387 if (disableConfirmed) {
388 this.startLoader();
389 this.$store
390 .dispatch('userManagement/disableUsers', this.selectedRows)
391 .then((messages) => {
392 messages.forEach(({ type, message }) => {
393 if (type === 'success') this.successToast(message);
394 if (type === 'error') this.errorToast(message);
395 });
396 })
397 .finally(() => this.endLoader());
398 }
399 });
Yoshie Muranaka183c2752020-02-12 11:30:49 -0800400 break;
Yoshie Muranaka183c2752020-02-12 11:30:49 -0800401 }
Yoshie Muranaka0e893f02020-02-18 13:39:45 -0800402 },
403 onTableRowAction(action, row) {
404 switch (action) {
405 case 'edit':
406 this.initModalUser(row);
407 break;
408 case 'delete':
409 this.initModalDelete(row);
410 break;
411 default:
412 break;
413 }
Yoshie Muranaka1b1c1002020-02-20 10:18:36 -0800414 },
415 saveAccountSettings(settings) {
Yoshie Muranaka346be2a2020-04-28 11:12:14 -0700416 this.startLoader();
Yoshie Muranaka1b1c1002020-02-20 10:18:36 -0800417 this.$store
Sandeepa Singhb4406162021-07-26 15:05:39 +0530418 .dispatch('userManagement/saveAccountSettings', settings)
Derick Montague602e98a2020-10-21 16:20:00 -0500419 .then((message) => this.successToast(message))
Yoshie Muranaka346be2a2020-04-28 11:12:14 -0700420 .catch(({ message }) => this.errorToast(message))
421 .finally(() => this.endLoader());
Derick Montague602e98a2020-10-21 16:20:00 -0500422 },
423 },
Yoshie Muranaka35080ac2020-01-17 15:38:57 -0600424};
425</script>
426
427<style lang="scss" scoped>
Ed Tanous7d6b44c2024-03-23 14:56:34 -0700428@import '@/assets/styles/bmc/helpers/_index.scss';
429@import '@/assets/styles/bootstrap/_helpers.scss';
430
Yoshie Muranaka4b0fc1d2020-01-06 07:36:16 -0800431.btn.collapsed {
432 svg {
433 transform: rotate(180deg);
434 }
435}
Yoshie Muranaka35080ac2020-01-17 15:38:57 -0600436</style>