MT#62495 Add devices admin password input

Allow subscriber administrator to configure the devices
admin password from CSC.

Change-Id: I2919f749704e421ebc22eb82de3e9ed956dd5b40
(cherry picked from commit 30d4b44aea)
mr12.5
Debora Crescenzo 4 weeks ago
parent 116effcd9c
commit 58eb0a61c6

@ -123,6 +123,25 @@
</template>
</q-input>
<q-input
v-model="changes.admin_pass"
:label="$t('Admin password')"
:disable="isLoadingPreferences"
@keyup.enter="save"
>
<template
v-if="hasAdminPasswordChanged"
#append
>
<csc-input-button-save
@click.stop="save"
/>
<csc-input-button-reset
@click.stop="resetAdminPassword"
/>
</template>
</q-input>
<q-list>
<q-item class="q-pb-sm q-mt-md">
<q-toggle
@ -153,7 +172,7 @@
<div class="col-12 col-md-6 q-pa-lg">
<csc-pbx-device-config
v-if="deviceModelImageMap[deviceProfileMap[deviceSelected.profile_id].device_id]"
v-if="deviceSelected && deviceModelImageMap[deviceProfileMap[deviceSelected?.profile_id].device_id]"
:device="deviceSelected"
:model="deviceModelMap[deviceProfileMap[deviceSelected.profile_id].device_id]"
:model-image="deviceModelImageMap[deviceProfileMap[deviceSelected.profile_id].device_id]"
@ -169,12 +188,13 @@
</template>
<script>
import useValidate from '@vuelidate/core'
import CscInputButtonReset from 'components/form/CscInputButtonReset'
import CscInputButtonSave from 'components/form/CscInputButtonSave'
import CscPageStickyTabs from 'components/CscPageStickyTabs'
import CscPbxDeviceConfig from 'components/pages/PbxConfiguration/CscPbxDeviceConfig'
import CscPbxModelSelect from 'components/pages/PbxConfiguration/CscPbxModelSelect'
import useValidate from '@vuelidate/core'
import { showGlobalError, showToast } from 'src/helpers/ui'
import {
mapActions,
mapGetters,
@ -182,10 +202,6 @@ import {
mapState
} from 'vuex'
import { RequestState } from 'src/store/common'
import {
showGlobalError,
showToast
} from 'src/helpers/ui'
export default {
name: 'CscPagePbxDeviceDetails',
components: {
@ -250,19 +266,19 @@ export default {
]
},
isLoading () {
return this.isDeviceLoading(this.deviceSelected.id)
return this.isDeviceLoading(this.deviceSelected?.id)
},
isLoadingPreferences () {
return this.isDevicePreferencesLoading(this.devicePreferencesSelected.id)
return this.isDevicePreferencesLoading(this.devicePreferencesSelected?.id)
},
hasStationNameChanged () {
return this.changes.station_name !== this.deviceSelected.station_name
return this.changes.station_name !== this.deviceSelected?.station_name
},
hasIdentifierChanged () {
return this.changes.identifier !== this.deviceSelected.identifier
return this.changes.identifier !== this.deviceSelected?.identifier
},
hasProfileChanged () {
return this.changes.profile_id !== this.deviceSelected.profile_id
return this.changes.profile_id !== this.deviceSelected?.profile_id
},
imageUrl () {
if (this.modelImage && this.modelImage.url) {
@ -271,10 +287,19 @@ export default {
return null
},
hasAdminNameChanged () {
return this.changes.admin_name !== this.devicePreferencesSelected.admin_name
return this.changes.admin_name !== this.devicePreferencesSelected?.admin_name
},
hasAdminPasswordChanged () {
return this.changes.admin_pass !== this.devicePreferencesSelected?.admin_pass
}
},
watch: {
async $route (to) {
if (this.id !== to.params.id) {
this.id = to.params.id
this.expandDevice(this.id)
}
},
deviceSelected () {
this.changes = this.getDeviceData()
},
@ -293,10 +318,14 @@ export default {
}
}
},
mounted () {
async created () {
await this.loadDeviceListItems()
if (this.isDeviceMapByIdEmpty) {
await this.loadDeviceListItems()
}
this.expandDevice(this.id)
this.expandDevicePreferences(this.id)
this.loadSubscribers()
await this.loadSubscribers()
},
methods: {
...mapMutations('pbxDevices', [
@ -304,11 +333,13 @@ export default {
'expandDevicePreferences'
]),
...mapActions('pbxDevices', [
'loadDeviceListItems',
'setDeviceKeys',
'setDeviceStationName',
'setDeviceIdentifier',
'setDeviceProfile',
'setAdminName',
'setAdminPassword',
'setGui',
'setUserConfig',
'setFW'
@ -323,6 +354,7 @@ export default {
identifier: this.deviceSelected.identifier,
profile_id: this.deviceSelected.profile_id,
admin_name: this.devicePreferencesSelected.admin_name ? this.devicePreferencesSelected.admin_name : undefined,
admin_pass: this.devicePreferencesSelected.admin_pass ? this.devicePreferencesSelected.admin_pass : undefined,
web_gui_dis: this.devicePreferencesSelected.web_gui_dis ? this.devicePreferencesSelected.web_gui_dis : false,
user_conf_priority: this.devicePreferencesSelected.user_conf_priority ? this.devicePreferencesSelected.user_conf_priority : false,
FW_upg_dis: this.devicePreferencesSelected.FW_upg_dis ? this.devicePreferencesSelected.FW_upg_dis : false
@ -330,19 +362,22 @@ export default {
: null
},
resetStationName () {
this.changes.station_name = this.deviceSelected.station_name
this.changes.station_name = this.deviceSelected?.station_name
},
resetIdentifier () {
this.changes.identifier = this.deviceSelected.identifier
this.changes.identifier = this.deviceSelected?.identifier
},
resetAdminName () {
this.changes.admin_name = this.devicePreferencesSelected.admin_name
this.changes.admin_name = this.devicePreferencesSelected?.admin_name
},
resetAdminPassword () {
this.changes.admin_pass = this.devicePreferencesSelected?.admin_pass
},
selectedProfile (profileId) {
this.changes.profile_id = profileId
},
resetProfile () {
this.changes.profile_id = this.deviceSelected.profile_id
this.changes.profile_id = this.deviceSelected?.profile_id
},
selectTab (tabName) {
if (this.selectedTab !== tabName) {
@ -354,51 +389,57 @@ export default {
},
keysSave (keys) {
this.setDeviceKeys({
deviceId: this.deviceSelected.id,
keys: keys
deviceId: this.deviceSelected?.id,
keys
})
},
save () {
if (this.hasStationNameChanged) {
this.setDeviceStationName({
deviceId: this.deviceSelected.id,
deviceId: this.deviceSelected?.id,
stationName: this.changes.station_name
})
}
if (this.hasIdentifierChanged) {
this.setDeviceIdentifier({
deviceId: this.deviceSelected.id,
deviceId: this.deviceSelected?.id,
identifier: this.changes.identifier
})
}
if (this.hasProfileChanged) {
this.setDeviceProfile({
deviceId: this.deviceSelected.id,
deviceId: this.deviceSelected?.id,
profileId: this.changes.profile_id
})
}
if (this.hasAdminNameChanged) {
this.setAdminName({
deviceId: this.devicePreferencesSelected.id,
deviceId: this.devicePreferencesSelected?.id,
adminName: this.changes.admin_name
})
}
if (this.hasAdminPasswordChanged) {
this.setAdminPassword({
deviceId: this.devicePreferencesSelected?.id,
adminPassword: this.changes.admin_pass
})
}
},
changeGui () {
this.setGui({
deviceId: this.devicePreferencesSelected.id,
deviceId: this.devicePreferencesSelected?.id,
webGui: this.changes.web_gui_dis
})
},
changeUserConfig () {
this.setUserConfig({
deviceId: this.devicePreferencesSelected.id,
deviceId: this.devicePreferencesSelected?.id,
userConf: this.changes.user_conf_priority
})
},
changeFW () {
this.setFW({
deviceId: this.devicePreferencesSelected.id,
deviceId: this.devicePreferencesSelected?.id,
FWupg: this.changes.FW_upg_dis
})
}

@ -30,7 +30,7 @@ export default {
deviceListLastPage: null,
deviceListState: RequestState.initiated,
deviceListVisibility: 'visible',
deviceMap: {},
deviceMapById: {},
devicePreferencesListItems: [],
devicePreferencesListState: RequestState.initiated,
devicePreferencesMap: {},
@ -70,6 +70,9 @@ export default {
getDevicePreferencesUpdatingName (state) {
return _.get(state, 'devicePreferencesUpdating.admin_name', '')
},
getDevicePreferencesUpdatingPassword (state) {
return _.get(state, 'devicePreferencesUpdating.admin_pass', '')
},
getDeviceRemoveDialogMessage (state, getters) {
if (getters.isDeviceRemoving) {
return i18n.global.tc('You are about to remove device {device}', {
@ -113,6 +116,9 @@ export default {
isDeviceListEmpty (state) {
return Array.isArray(state.deviceListItems) && state.deviceListItems.length === 0
},
isDeviceMapByIdEmpty (state) {
return Object.keys(state.deviceMapById).length === 0
},
isDeviceListPaginationActive (state, getters) {
const requesting = !getters.isDeviceListRequesting || getters.isDeviceCreating ||
getters.isDeviceRemoving || getters.isDeviceUpdating
@ -154,7 +160,7 @@ export default {
if (clearList) {
state.deviceListVisibility = 'hidden'
state.deviceListItems = []
state.deviceMap = {}
state.deviceMapById = {}
} else {
state.deviceListVisibility = 'visible'
}
@ -164,9 +170,9 @@ export default {
state.deviceListCurrentPage = _.get(options, 'page', 1)
state.deviceListItems = _.get(options, 'devices.items', [])
state.deviceListLastPage = _.get(options, 'devices.lastPage', 1)
state.deviceMap = {}
state.deviceMapById = {}
state.deviceListItems.forEach((device) => {
state.deviceMap[device.id] = device
state.deviceMapById[device.id] = device
})
state.deviceListVisibility = 'visible'
},
@ -196,7 +202,7 @@ export default {
state.deviceCreationError = err
},
deviceUpdateRequesting (state, options) {
state.deviceUpdating = state.deviceMap[options.deviceId]
state.deviceUpdating = state.deviceMapById[options.deviceId]
state.deviceUpdatingField = options.deviceField
state.deviceUpdateState = RequestState.requesting
},
@ -207,8 +213,8 @@ export default {
},
deviceUpdateSucceeded (state, device) {
state.deviceUpdateState = RequestState.succeeded
delete state.deviceMap[device.id]
state.deviceMap[device.id] = device
delete state.deviceMapById[device.id]
state.deviceMapById[device.id] = device
for (let i = 0; i < state.deviceListItems.length; i++) {
if (state.deviceListItems[i].id === device.id) {
state.deviceListItems[i] = device
@ -243,7 +249,7 @@ export default {
},
deviceRemovalRequesting (state, id) {
state.deviceRemovalState = RequestState.requesting
state.deviceRemoving = state.deviceMap[id]
state.deviceRemoving = state.deviceMapById[id]
},
deviceRemovalCanceled (state) {
state.deviceRemovalState = RequestState.initiated
@ -257,7 +263,7 @@ export default {
state.deviceRemovalError = err
},
expandDevice (state, deviceId) {
state.deviceSelected = state.deviceMap[deviceId]
state.deviceSelected = state.deviceMapById[deviceId]
},
expandDevicePreferences (state, devicePreferencesId) {
state.devicePreferencesSelected = state.devicePreferencesMap[devicePreferencesId]
@ -398,6 +404,17 @@ export default {
context.commit('devicePreferencesUpdateFailed', err.message)
})
},
setAdminPassword (context, options) {
context.commit('devicePreferencesUpdateRequesting', {
deviceId: options.deviceId,
devicePreferencesField: i18n.global.t('Admin password')
})
setPreferenceDevice(options.deviceId, options.adminPassword, 'admin_pass').then((device) => {
context.commit('devicePreferencesUpdateSucceeded', device)
}).catch((err) => {
context.commit('devicePreferencesUpdateFailed', err.message)
})
},
setFW (context, options) {
context.commit('devicePreferencesUpdateRequesting', {
deviceId: options.deviceId,

Loading…
Cancel
Save