TT#130400 SubscriberProfiles - Hide main menu item, if none of the containing parts of the page are visible due to a SubscriberProfile

NOTE
Affected routes/modules:
- /call-blocking/incoming by 'block_in_clir', 'block_in_mode', 'block_in_list'
- /call-blocking/outgoing by 'block_out_mode', 'block_out_list'
- /call-blocking/privacy by 'clir'
- /call-settings by 'music_on_hold', 'language'
- /pbx-settings by 'clir_intrapbx'

When the controlling profile attribute(s) are all unchecked, the module should disappear from CSC main menu and the route should not be reachable.
For AR, in AUI you need to create a Subscriber Profile with at least one Profile, and assign the newly created profile to the subscriber via Details > Master Data.

Change-Id: Idadcc096643fe58419682042814d3508c015b464
mr10.0
Carlo Venusino 4 years ago
parent 1c5fc09065
commit a282cd29ae

@ -1,4 +1,3 @@
export default ({ Vue, app }) => { export default ({ Vue, app }) => {
Vue.prototype.$faxQualityOptions = [ Vue.prototype.$faxQualityOptions = [
{ label: app.i18n.t('Normal'), value: 'normal' }, { label: app.i18n.t('Normal'), value: 'normal' },

@ -36,6 +36,8 @@ export default ({ app, router, store }) => {
default: default:
if (to.meta?.profileAttribute) { if (to.meta?.profileAttribute) {
app.store.getters['user/hasSubscriberProfileAttribute'](to.meta.profileAttribute) ? next() : next('/') app.store.getters['user/hasSubscriberProfileAttribute'](to.meta.profileAttribute) ? next() : next('/')
} else if (to.meta?.profileAttributes) {
app.store.getters['user/hasSubscriberProfileAttributes'](to.meta.profileAttributes) ? next() : next('/')
} else { } else {
next() next()
} }

@ -9,6 +9,8 @@ import {
mapGetters mapGetters
} from 'vuex' } from 'vuex'
import CscMainMenu from 'components/CscMainMenu' import CscMainMenu from 'components/CscMainMenu'
import { PROFILE_ATTRIBUTE_MAP, PROFILE_ATTRIBUTES_MAP } from 'src/constants'
export default { export default {
name: 'CscMainMenuTop', name: 'CscMainMenuTop',
components: { components: {
@ -49,6 +51,7 @@ export default {
'isPbxEnabled', 'isPbxEnabled',
'hasFaxCapability', 'hasFaxCapability',
'hasSubscriberProfileAttribute', 'hasSubscriberProfileAttribute',
'hasSubscriberProfileAttributes',
'getCustomerId', 'getCustomerId',
'isOldCSCProxyingAllowed' 'isOldCSCProxyingAllowed'
]), ]),
@ -83,13 +86,13 @@ export default {
to: '/user/call-settings', to: '/user/call-settings',
icon: 'settings', icon: 'settings',
label: this.$t('General'), label: this.$t('General'),
visible: true visible: this.hasSubscriberProfileAttributes(PROFILE_ATTRIBUTES_MAP.callSettings)
}, },
{ {
to: '/user/voicebox', to: '/user/voicebox',
icon: 'voicemail', icon: 'voicemail',
label: this.$t('Voicebox'), label: this.$t('Voicebox'),
visible: this.hasSubscriberProfileAttribute('voice_mail') visible: this.hasSubscriberProfileAttribute(PROFILE_ATTRIBUTE_MAP.voiceMail)
}, },
{ {
to: '/user/call-forwarding', to: '/user/call-forwarding',
@ -101,31 +104,31 @@ export default {
to: '/user/call-blocking/incoming', to: '/user/call-blocking/incoming',
icon: 'call_received', icon: 'call_received',
label: this.$t('Block incoming'), label: this.$t('Block incoming'),
visible: true visible: this.hasSubscriberProfileAttributes(PROFILE_ATTRIBUTES_MAP.callBlockingIncoming)
}, },
{ {
to: '/user/call-blocking/outgoing', to: '/user/call-blocking/outgoing',
icon: 'call_made', icon: 'call_made',
label: this.$t('Block outgoing'), label: this.$t('Block outgoing'),
visible: true visible: this.hasSubscriberProfileAttributes(PROFILE_ATTRIBUTES_MAP.callBlockingOutgoing)
}, },
{ {
to: '/user/call-blocking/privacy', to: '/user/call-blocking/privacy',
icon: 'fas fa-user-secret', icon: 'fas fa-user-secret',
label: this.$t('Privacy'), label: this.$t('Privacy'),
visible: true visible: this.hasSubscriberProfileAttribute(PROFILE_ATTRIBUTE_MAP.callBlockingPrivacy)
}, },
{ {
to: '/user/speeddial', to: '/user/speeddial',
icon: 'touch_app', icon: 'touch_app',
label: this.$t('Speed Dial'), label: this.$t('Speed Dial'),
visible: this.hasSubscriberProfileAttribute('speed_dial') visible: this.hasSubscriberProfileAttribute(PROFILE_ATTRIBUTE_MAP.speedDial)
}, },
{ {
to: '/user/reminder', to: '/user/reminder',
icon: 'notification_important', icon: 'notification_important',
label: this.$t('Reminder'), label: this.$t('Reminder'),
visible: this.hasSubscriberProfileAttribute('reminder') visible: this.hasSubscriberProfileAttribute(PROFILE_ATTRIBUTE_MAP.reminder)
}, },
{ {
to: '/user/recordings', to: '/user/recordings',
@ -139,7 +142,7 @@ export default {
to: '/user/fax-settings', to: '/user/fax-settings',
icon: 'fas fa-fax', icon: 'fas fa-fax',
label: this.$t('Fax Settings'), label: this.$t('Fax Settings'),
visible: this.hasFaxCapability && this.hasSubscriberProfileAttribute('fax_server') visible: this.hasFaxCapability && this.hasSubscriberProfileAttribute(PROFILE_ATTRIBUTE_MAP.faxServer)
}, },
{ {
icon: 'miscellaneous_services', icon: 'miscellaneous_services',
@ -195,7 +198,7 @@ export default {
to: '/user/pbx-settings', to: '/user/pbx-settings',
icon: 'settings', icon: 'settings',
label: this.$t('PBX Settings'), label: this.$t('PBX Settings'),
visible: this.isPbxEnabled visible: this.isPbxEnabled && this.hasSubscriberProfileAttribute(PROFILE_ATTRIBUTE_MAP.pbxSettings)
}, },
{ {
to: '/user/registered-devices', to: '/user/registered-devices',

@ -5,3 +5,18 @@ export const INTERNAL_DATE_FORMAT_SLASH = 'YYYY/MM/DD'
export const INTERNAL_DATE_FORMAT_DASH = 'YYYY-MM-DD' export const INTERNAL_DATE_FORMAT_DASH = 'YYYY-MM-DD'
export const INTERNAL_DATE_FORMAT_DASH_HOUR = 'YYYY-MM-DD HH:mm' export const INTERNAL_DATE_FORMAT_DASH_HOUR = 'YYYY-MM-DD HH:mm'
export const PROFILE_ATTRIBUTE_MAP = {
reminder: 'reminder',
speedDial: 'speed_dial',
voiceMail: 'voice_mail',
callBlockingPrivacy: 'clir',
faxServer: 'fax_server',
pbxSettings: 'clir_intrapbx'
}
export const PROFILE_ATTRIBUTES_MAP = {
callBlockingIncoming: ['block_in_clir', 'block_in_mode', 'block_in_list'],
callBlockingOutgoing: ['block_out_mode', 'block_out_list'],
callSettings: ['music_on_hold', 'language']
}

@ -1,3 +1,4 @@
import { PROFILE_ATTRIBUTE_MAP, PROFILE_ATTRIBUTES_MAP } from 'src/constants'
import CscLayoutConference from 'src/layouts/CscLayoutConference' import CscLayoutConference from 'src/layouts/CscLayoutConference'
import CscLayoutMain from 'src/layouts/CscLayoutMain' import CscLayoutMain from 'src/layouts/CscLayoutMain'
@ -81,7 +82,8 @@ export default function routes (app) {
}, },
get subtitle () { get subtitle () {
return i18n.t('Incoming') return i18n.t('Incoming')
} },
profileAttributes: PROFILE_ATTRIBUTES_MAP.callBlockingIncoming
} }
}, },
{ {
@ -93,7 +95,8 @@ export default function routes (app) {
}, },
get subtitle () { get subtitle () {
return i18n.t('Outgoing') return i18n.t('Outgoing')
} },
profileAttributes: PROFILE_ATTRIBUTES_MAP.callBlockingOutgoing
} }
}, },
{ {
@ -105,7 +108,8 @@ export default function routes (app) {
}, },
get subtitle () { get subtitle () {
return i18n.t('Privacy') return i18n.t('Privacy')
} },
profileAttribute: PROFILE_ATTRIBUTE_MAP.callBlockingPrivacy
} }
}, },
{ {
@ -130,7 +134,7 @@ export default function routes (app) {
get subtitle () { get subtitle () {
return i18n.t('Set your personal alarm') return i18n.t('Set your personal alarm')
}, },
profileAttribute: 'reminder' profileAttribute: PROFILE_ATTRIBUTE_MAP.reminder
} }
}, },
{ {
@ -143,7 +147,7 @@ export default function routes (app) {
get subtitle () { get subtitle () {
return i18n.t('Set your speed dials') return i18n.t('Set your speed dials')
}, },
profileAttribute: 'speed_dial' profileAttribute: PROFILE_ATTRIBUTE_MAP.speedDial
} }
}, },
{ {
@ -240,7 +244,7 @@ export default function routes (app) {
get subtitle () { get subtitle () {
return i18n.t('Set your voicebox settings') return i18n.t('Set your voicebox settings')
}, },
profileAttribute: 'voice_mail' profileAttribute: PROFILE_ATTRIBUTE_MAP.voiceMail
} }
}, },
{ {
@ -253,7 +257,7 @@ export default function routes (app) {
get subtitle () { get subtitle () {
return i18n.t('Set your fax settings') return i18n.t('Set your fax settings')
}, },
profileAttribute: 'fax_server' profileAttribute: PROFILE_ATTRIBUTE_MAP.faxServer
}, },
async beforeEnter (routeTo, routeFrom, next) { async beforeEnter (routeTo, routeFrom, next) {
if (app.store.getters['user/hasFaxCapability']) { if (app.store.getters['user/hasFaxCapability']) {
@ -284,7 +288,8 @@ export default function routes (app) {
}, },
get subtitle () { get subtitle () {
return i18n.t('Call Settings') return i18n.t('Call Settings')
} },
profileAttributes: PROFILE_ATTRIBUTES_MAP.callSettings
} }
}, },
{ {
@ -296,7 +301,8 @@ export default function routes (app) {
}, },
get subtitle () { get subtitle () {
return i18n.t('Set your PBX settings') return i18n.t('Set your PBX settings')
} },
profileAttribute: PROFILE_ATTRIBUTE_MAP.pbxSettings
} }
}, },
{ {

Loading…
Cancel
Save