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)
(cherry picked from commit defc0b4677)
mr13.2.1
Debora Crescenzo 4 weeks ago committed by Crescenzo Debora
parent a3f377d7f6
commit ef24a96224

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

@ -24,7 +24,7 @@ export default {
deviceListLastPage: null, deviceListLastPage: null,
deviceListState: RequestState.initiated, deviceListState: RequestState.initiated,
deviceListVisibility: 'visible', deviceListVisibility: 'visible',
deviceMap: {}, deviceMapById: {},
devicePreferencesListItems: [], devicePreferencesListItems: [],
devicePreferencesListState: RequestState.initiated, devicePreferencesListState: RequestState.initiated,
devicePreferencesMap: {}, devicePreferencesMap: {},
@ -64,6 +64,9 @@ export default {
getDevicePreferencesUpdatingName (state) { getDevicePreferencesUpdatingName (state) {
return _.get(state, 'devicePreferencesUpdating.admin_name', '') return _.get(state, 'devicePreferencesUpdating.admin_name', '')
}, },
getDevicePreferencesUpdatingPassword (state) {
return _.get(state, 'devicePreferencesUpdating.admin_pass', '')
},
getDeviceRemoveDialogMessage (state, getters) { getDeviceRemoveDialogMessage (state, getters) {
if (getters.isDeviceRemoving) { if (getters.isDeviceRemoving) {
return i18n.global.tc('You are about to remove device {device}', { return i18n.global.tc('You are about to remove device {device}', {
@ -107,6 +110,9 @@ export default {
isDeviceListEmpty (state) { isDeviceListEmpty (state) {
return Array.isArray(state.deviceListItems) && state.deviceListItems.length === 0 return Array.isArray(state.deviceListItems) && state.deviceListItems.length === 0
}, },
isDeviceMapByIdEmpty (state) {
return Object.keys(state.deviceMapById).length === 0
},
isDeviceListPaginationActive (state, getters) { isDeviceListPaginationActive (state, getters) {
const requesting = !getters.isDeviceListRequesting || getters.isDeviceCreating || const requesting = !getters.isDeviceListRequesting || getters.isDeviceCreating ||
getters.isDeviceRemoving || getters.isDeviceUpdating getters.isDeviceRemoving || getters.isDeviceUpdating
@ -148,7 +154,7 @@ export default {
if (clearList) { if (clearList) {
state.deviceListVisibility = 'hidden' state.deviceListVisibility = 'hidden'
state.deviceListItems = [] state.deviceListItems = []
state.deviceMap = {} state.deviceMapById = {}
} else { } else {
state.deviceListVisibility = 'visible' state.deviceListVisibility = 'visible'
} }
@ -158,9 +164,9 @@ export default {
state.deviceListCurrentPage = _.get(options, 'page', 1) state.deviceListCurrentPage = _.get(options, 'page', 1)
state.deviceListItems = _.get(options, 'devices.items', []) state.deviceListItems = _.get(options, 'devices.items', [])
state.deviceListLastPage = _.get(options, 'devices.lastPage', 1) state.deviceListLastPage = _.get(options, 'devices.lastPage', 1)
state.deviceMap = {} state.deviceMapById = {}
state.deviceListItems.forEach((device) => { state.deviceListItems.forEach((device) => {
state.deviceMap[device.id] = device state.deviceMapById[device.id] = device
}) })
state.deviceListVisibility = 'visible' state.deviceListVisibility = 'visible'
}, },
@ -190,7 +196,7 @@ export default {
state.deviceCreationError = err state.deviceCreationError = err
}, },
deviceUpdateRequesting (state, options) { deviceUpdateRequesting (state, options) {
state.deviceUpdating = state.deviceMap[options.deviceId] state.deviceUpdating = state.deviceMapById[options.deviceId]
state.deviceUpdatingField = options.deviceField state.deviceUpdatingField = options.deviceField
state.deviceUpdateState = RequestState.requesting state.deviceUpdateState = RequestState.requesting
}, },
@ -201,8 +207,8 @@ export default {
}, },
deviceUpdateSucceeded (state, device) { deviceUpdateSucceeded (state, device) {
state.deviceUpdateState = RequestState.succeeded state.deviceUpdateState = RequestState.succeeded
delete state.deviceMap[device.id] delete state.deviceMapById[device.id]
state.deviceMap[device.id] = device state.deviceMapById[device.id] = device
for (let i = 0; i < state.deviceListItems.length; i++) { for (let i = 0; i < state.deviceListItems.length; i++) {
if (state.deviceListItems[i].id === device.id) { if (state.deviceListItems[i].id === device.id) {
state.deviceListItems[i] = device state.deviceListItems[i] = device
@ -237,7 +243,7 @@ export default {
}, },
deviceRemovalRequesting (state, id) { deviceRemovalRequesting (state, id) {
state.deviceRemovalState = RequestState.requesting state.deviceRemovalState = RequestState.requesting
state.deviceRemoving = state.deviceMap[id] state.deviceRemoving = state.deviceMapById[id]
}, },
deviceRemovalCanceled (state) { deviceRemovalCanceled (state) {
state.deviceRemovalState = RequestState.initiated state.deviceRemovalState = RequestState.initiated
@ -251,7 +257,7 @@ export default {
state.deviceRemovalError = err state.deviceRemovalError = err
}, },
expandDevice (state, deviceId) { expandDevice (state, deviceId) {
state.deviceSelected = state.deviceMap[deviceId] state.deviceSelected = state.deviceMapById[deviceId]
}, },
expandDevicePreferences (state, devicePreferencesId) { expandDevicePreferences (state, devicePreferencesId) {
state.devicePreferencesSelected = state.devicePreferencesMap[devicePreferencesId] state.devicePreferencesSelected = state.devicePreferencesMap[devicePreferencesId]
@ -392,6 +398,17 @@ export default {
context.commit('devicePreferencesUpdateFailed', err.message) 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) { setFW (context, options) {
context.commit('devicePreferencesUpdateRequesting', { context.commit('devicePreferencesUpdateRequesting', {
deviceId: options.deviceId, deviceId: options.deviceId,

Loading…
Cancel
Save