You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcp-csc-ui/src/router/routes.js

691 lines
26 KiB

import { i18n } from 'boot/i18n'
import CscLayoutLogin from 'layouts/CscLayoutLogin'
import CscLayoutMain from 'layouts/CscLayoutMain'
import CscPageChangePassword from 'pages/CscChangeExpiredPassword'
import CscPageCallBlockingIncoming from 'pages/CscPageCallBlockingIncoming'
import CscPageCallBlockingOutgoing from 'pages/CscPageCallBlockingOutgoing'
import CscPageCallBlockingPrivacy from 'pages/CscPageCallBlockingPrivacy'
import CscPageCallRecording from 'pages/CscPageCallRecording'
import CscPageCallSettings from 'pages/CscPageCallSettings'
import CscPageCf from 'pages/CscPageCf'
import CscPageConversations from 'pages/CscPageConversations'
import CscPageCustomerPhonebook from 'pages/CscPageCustomerPhonebook'
import CscPageCustomerPhonebookAdd from 'pages/CscPageCustomerPhonebookAdd'
import CscPageCustomerPhonebookDetails from 'pages/CscPageCustomerPhonebookDetails'
import CscPageCustomerPhonebookUpload from 'pages/CscPageCustomerPhonebookUpload'
import CscPageCustomerPreferences from 'pages/CscPageCustomerPreferences'
import CscPageDashboard from 'pages/CscPageDashboard'
import CscPageError404 from 'pages/CscPageError404'
import CscPageFaxSettings from 'pages/CscPageFaxSettings'
import CscPageHome from 'pages/CscPageHome'
import CscPageLogin from 'pages/CscPageLogin'
import CscPagePbxAutoAttendant from 'pages/CscPagePbxAutoAttendant'
import CscPagePbxCallQueues from 'pages/CscPagePbxCallQueues'
import CscPagePbxDeviceDetails from 'pages/CscPagePbxDeviceDetails'
import CscPagePbxDevices from 'pages/CscPagePbxDevices'
import CscPagePbxGroupDetails from 'pages/CscPagePbxGroupDetails'
import CscPagePbxGroups from 'pages/CscPagePbxGroups'
import CscPagePbxMsConfigs from 'pages/CscPagePbxMsConfigs'
import CscPagePbxSeatDetails from 'pages/CscPagePbxSeatDetails'
import CscPagePbxSeats from 'pages/CscPagePbxSeats'
import CscPagePbxSettingsAutoAttendant from 'pages/CscPagePbxSettingsAutoAttendant'
import CscPagePbxSettingsCallQueues from 'pages/CscPagePbxSettingsCallQueues'
import CscPagePbxSettingsMsConfigs from 'pages/CscPagePbxSettingsMsConfigs'
import CscPagePbxSoundSetDetails from 'pages/CscPagePbxSoundSetDetails'
import CscPagePbxSoundSets from 'pages/CscPagePbxSoundSets'
import CscPagePbxStatisticsCdr from 'pages/CscPagePbxStatisticsCdr'
import CscPageRegisteredDevices from 'pages/CscPageRegisteredDevices'
import CscPageReminder from 'pages/CscPageReminder'
import CscPageSeats from 'pages/CscPageSeats'
import CscPageSpeedDial from 'pages/CscPageSpeedDial'
import CscPageSubscriberPhonebook from 'pages/CscPageSubscriberPhonebook'
import CscPageSubscriberPhonebookAdd from 'pages/CscPageSubscriberPhonebookAdd'
import CscPageSubscriberPhonebookDetails from 'pages/CscPageSubscriberPhonebookDetails'
import CscPageUserSettings from 'pages/CscPageUserSettings'
import CscPageVoicebox from 'pages/CscPageVoicebox'
import CscRecoverPassword from 'pages/CscRecoverPassword'
import {
FEATURES,
LICENSES,
PROFILE_ATTRIBUTES_MAP,
PROFILE_ATTRIBUTE_MAP
} from 'src/constants'
export const PATH_CHANGE_PASSWORD = '/changepassword'
const getToken = (route) => ({
token: route.query.token
})
const routes = [
{
name: 'root',
path: '/user',
component: CscLayoutMain,
children: [
{
name: 'dashboard',
path: 'dashboard',
component: CscPageDashboard,
meta: {
get title () {
return i18n.global.t('Dashboard')
}
}
},
{
path: 'home',
component: CscPageHome,
meta: {
get title () {
return i18n.global.t('Start new call')
},
profileAttribute: PROFILE_ATTRIBUTE_MAP.cscCalls,
allowCE: true
}
},
{
path: 'conversations',
name: 'CscConversations',
component: CscPageConversations,
props: true,
meta: {
get title () {
return i18n.global.t('Conversations')
},
get subtitle () {
return i18n.global.t('Calls, Faxes, VoiceMails')
},
profileAttribute: PROFILE_ATTRIBUTE_MAP.conversations
}
},
{
path: 'subscriber-phonebook',
name: 'SubscriberPhonebook',
component: CscPageSubscriberPhonebook,
meta: {
get title () {
return i18n.global.t('Subscriber Phonebook')
},
licenses: [LICENSES.phonebook]
}
},
{
path: 'subscriber-phonebook/create',
component: CscPageSubscriberPhonebookAdd,
meta: {
get title () {
return i18n.global.t('Add Phonebook')
},
licenses: [LICENSES.phonebook]
}
},
{
path: 'subscriber-phonebook/:id',
component: CscPageSubscriberPhonebookDetails,
meta: {
get title () {
return i18n.global.t('Subscriber Phonebook')
},
licenses: [LICENSES.phonebook]
}
},
{
path: 'seats',
component: CscPageSeats,
meta: {
get title () {
return i18n.global.t('Seats')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx]
}
},
{
path: 'call-forwarding',
component: CscPageCf,
meta: {
get title () {
return i18n.global.t('Call Forwarding')
},
profileAttributes: PROFILE_ATTRIBUTES_MAP.callForwarding
}
},
{
path: 'call-blocking/incoming',
component: CscPageCallBlockingIncoming,
meta: {
get title () {
return i18n.global.t('Call Blocking')
},
get subtitle () {
return i18n.global.t('Incoming')
},
profileAttributes: PROFILE_ATTRIBUTES_MAP.callBlockingIncoming
}
},
{
path: 'call-blocking/outgoing',
component: CscPageCallBlockingOutgoing,
meta: {
get title () {
return i18n.global.t('Call Blocking')
},
get subtitle () {
return i18n.global.t('Outgoing')
},
profileAttributes: PROFILE_ATTRIBUTES_MAP.callBlockingOutgoing
}
},
{
path: 'call-blocking/privacy',
component: CscPageCallBlockingPrivacy,
meta: {
get title () {
return i18n.global.t('Call Blocking')
},
get subtitle () {
return i18n.global.t('Privacy')
},
profileAttributes: PROFILE_ATTRIBUTES_MAP.callBlockingPrivacy
}
},
{
path: 'recordings',
component: CscPageCallRecording,
meta: {
get title () {
return i18n.global.t('Recordings')
},
get subtitle () {
return i18n.global.t('Call recordings')
},
profileAttribute: PROFILE_ATTRIBUTE_MAP.recordings,
licenses: [LICENSES.recordings],
allowCE: true
}
},
{
path: 'reminder',
component: CscPageReminder,
meta: {
get title () {
return i18n.global.t('Reminder')
},
get subtitle () {
return i18n.global.t('Set your personal alarm')
},
profileAttribute: PROFILE_ATTRIBUTE_MAP.reminder
}
},
{
path: 'speeddial',
component: CscPageSpeedDial,
meta: {
get title () {
return i18n.global.t('Speed Dial')
},
get subtitle () {
return i18n.global.t('Set your speed dials')
},
profileAttribute: PROFILE_ATTRIBUTE_MAP.speedDial
}
},
{
path: 'pbx-statistics/cdr',
component: CscPagePbxStatisticsCdr,
meta: {
get title () {
return i18n.global.t('PBX Statistics')
},
get subtitle () {
return i18n.global.t('CDR')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx]
}
},
{
path: 'pbx-configuration/groups',
component: CscPagePbxGroups,
meta: {
get title () {
return i18n.global.t('PBX Configuration')
},
get subtitle () {
return i18n.global.t('Groups')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
profileAttribute: PROFILE_ATTRIBUTE_MAP.huntGroups,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx]
}
},
{
path: 'pbx-configuration/group/:id',
component: CscPagePbxGroupDetails,
meta: {
get title () {
return i18n.global.t('PBX Configuration')
},
get subtitle () {
return i18n.global.t('Groups')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
profileAttribute: PROFILE_ATTRIBUTE_MAP.huntGroups,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx]
}
},
{
path: 'pbx-configuration/seats',
component: CscPagePbxSeats,
meta: {
get title () {
return i18n.global.t('PBX Configuration')
},
get subtitle () {
return i18n.global.t('Seats')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx]
}
},
{
path: 'pbx-configuration/customer-phonebook',
component: CscPageCustomerPhonebook,
meta: {
get title () {
return i18n.global.t('PBX Configuration')
},
get subtitle () {
return i18n.global.t('Customer Phonebook')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx, LICENSES.phonebook]
}
},
{
path: 'pbx-configuration/customer-phonebook/create',
component: CscPageCustomerPhonebookAdd,
meta: {
get title () {
return i18n.global.t('Add Phonebook')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx, LICENSES.phonebook]
}
},
{
path: 'pbx-configuration/customer-phonebook/upload',
component: CscPageCustomerPhonebookUpload,
meta: {
get title () {
return i18n.global.t('Upload CSV')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx, LICENSES.phonebook]
}
},
{
path: 'pbx-configuration/customer-phonebook/:id',
component: CscPageCustomerPhonebookDetails,
meta: {
get title () {
return i18n.global.t('Customer Phonebook')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx, LICENSES.phonebook]
}
},
{
path: 'pbx-configuration/device/:id',
component: CscPagePbxDeviceDetails,
meta: {
get title () {
return i18n.global.t('PBX Configuration')
},
get subtitle () {
return i18n.global.t('Devices')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
profileAttribute: PROFILE_ATTRIBUTE_MAP.deviceProvisioning,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx, LICENSES.device_provisioning]
}
},
{
path: 'pbx-configuration/seat/:id',
component: CscPagePbxSeatDetails,
meta: {
get title () {
return i18n.global.t('PBX Configuration')
},
get subtitle () {
return i18n.global.t('Seats')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx]
}
},
{
path: 'pbx-configuration/devices',
component: CscPagePbxDevices,
meta: {
get title () {
return i18n.global.t('PBX Configuration')
},
get subtitle () {
return i18n.global.t('Devices')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
profileAttribute: PROFILE_ATTRIBUTE_MAP.deviceProvisioning,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx, LICENSES.device_provisioning]
}
},
{
path: 'pbx-configuration/call-queues',
component: CscPagePbxCallQueues,
meta: {
get title () {
return i18n.global.t('PBX Configuration')
},
get subtitle () {
return i18n.global.t('Call Queues')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
profileAttributes: PROFILE_ATTRIBUTE_MAP.cloudPbxCallQueue,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx]
}
},
{
path: 'pbx-configuration/sound-sets',
component: CscPagePbxSoundSets,
meta: {
get title () {
return i18n.global.t('PBX Configuration')
},
get subtitle () {
return i18n.global.t('Sound Sets')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
profileAttribute: PROFILE_ATTRIBUTE_MAP.soundSet,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx]
}
},
{
path: 'pbx-configuration/sound-sets/:id',
component: CscPagePbxSoundSetDetails,
meta: {
get title () {
return i18n.global.t('PBX Configuration')
},
get subtitle () {
return i18n.global.t('Sound Sets')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
profileAttribute: PROFILE_ATTRIBUTE_MAP.soundSet,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx]
}
},
{
path: 'pbx-configuration/ms-configs',
component: CscPagePbxMsConfigs,
meta: {
get title () {
return i18n.global.t('PBX Configuration')
},
get subtitle () {
return i18n.global.t('Manager Secretary')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
profileAttribute: PROFILE_ATTRIBUTE_MAP.managerSecretary,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx]
}
},
{
path: 'pbx-configuration/auto-attendant',
component: CscPagePbxAutoAttendant,
meta: {
get title () {
return i18n.global.t('PBX Configuration')
},
get subtitle () {
return i18n.global.t('Auto Attendant')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
profileAttribute: PROFILE_ATTRIBUTE_MAP.autoAttendant,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx]
}
},
{
path: 'pbx-configuration/customer-preferences',
component: CscPageCustomerPreferences,
meta: {
get title () {
return i18n.global.t('PBX Configuration')
},
get subtitle () {
return i18n.global.t('Customer Preferences')
},
adminOnly: true,
platformFeature: FEATURES.cloudPbx,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx, LICENSES.phonebook]
}
},
{
path: 'voicebox',
component: CscPageVoicebox,
meta: {
get title () {
return i18n.global.t('Voicebox')
},
get subtitle () {
return i18n.global.t('Set your voicebox settings')
},
profileAttribute: PROFILE_ATTRIBUTE_MAP.voiceMail
}
},
{
path: 'fax-settings',
component: CscPageFaxSettings,
meta: {
get title () {
return i18n.global.t('Fax Settings')
},
get subtitle () {
return i18n.global.t('Set your fax settings')
},
platformFeature: FEATURES.faxServer,
profileAttribute: PROFILE_ATTRIBUTE_MAP.faxServer,
capability: FEATURES.faxServer,
licenses: [LICENSES.fax]
}
},
{
path: 'settings',
component: CscPageUserSettings,
meta: {
get title () {
return i18n.global.t('User settings')
},
get subtitle () {
return i18n.global.t('Change password')
}
}
},
{
path: 'call-settings',
component: CscPageCallSettings,
meta: {
get title () {
return i18n.global.t('Call Settings')
},
get subtitle () {
return i18n.global.t('Call Settings')
},
profileAttributes: PROFILE_ATTRIBUTES_MAP.callSettings
}
},
{
path: 'extension-settings/call-queues',
component: CscPagePbxSettingsCallQueues,
meta: {
get title () {
return i18n.global.t('Extension Settings')
},
get subtitle () {
return i18n.global.t('Call Queues')
},
platformFeature: FEATURES.cloudPbx,
profileAttributes: PROFILE_ATTRIBUTE_MAP.cloudPbxCallQueue,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx]
}
},
{
path: 'extension-settings/ms-configs',
component: CscPagePbxSettingsMsConfigs,
meta: {
get title () {
return i18n.global.t('Extension Settings')
},
get subtitle () {
return i18n.global.t('Manager Secretary')
},
profileAttribute: PROFILE_ATTRIBUTE_MAP.managerSecretary,
platformFeature: FEATURES.cloudPbx,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx]
}
},
{
path: 'extension-settings/auto-attendant',
component: CscPagePbxSettingsAutoAttendant,
meta: {
get title () {
return i18n.global.t('Extension Settings')
},
get subtitle () {
return i18n.global.t('Auto Attendant')
},
platformFeature: FEATURES.cloudPbx,
profileAttribute: PROFILE_ATTRIBUTE_MAP.autoAttendant,
capability: FEATURES.cloudPbx,
licenses: [LICENSES.pbx]
}
},
{
path: 'registered-devices',
name: 'RegisteredDevices',
component: CscPageRegisteredDevices,
meta: {
get title () {
return i18n.global.t('Registered Devices')
},
get subtitle () {
return i18n.global.t('List of registered devices for the subscriber')
},
profileAttribute: PROFILE_ATTRIBUTE_MAP.registeredDevices
}
},
{
path: '*',
component: CscPageError404,
meta: {
get title () {
return i18n.global.t('Page not found')
}
}
}
]
},
{
path: '/login',
component: CscPageLogin,
meta: {
get title () {
return i18n.global.t('Subscriber Sign In')
}
}
},
{
name: 'passwordChange',
path: PATH_CHANGE_PASSWORD,
component: CscPageChangePassword
},
{
path: '/recoverpassword',
component: CscLayoutLogin,
children: [
{
path: '',
component: CscRecoverPassword,
props: getToken,
meta: {
get title () {
return i18n.global.t('Reset Password')
},
permission: 'public'
}
}
]
},
{
path: '/',
redirect: {
name: 'dashboard'
}
},
{
path: '/:catchAll(.*)*',
component: CscLayoutLogin,
children: [
{
path: '',
component: CscPageError404,
meta: {
get title () {
return i18n.global.t('Page not found')
}
}
}
]
}
]
export default routes