Fixed an issue where the component tried to access the `id` property
of `this.groupSelected` when it was undefined. This happened because
the state gets cleared on refresh, and the component didn't have a
check to reload the necessary resources.
- Added check to ensure resources are reloaded if state is cleared
- Prevent accessing `id` of undefined in the component
Change-Id: Ib6b669df87d255cf174254b32fa1c451d0901f73
The PBX seat page was crashing because v2 calls always return
unauthorized. An investigation is ongoing to determine whether
NCOS seat should be accessed by subscriber. In the meantime,
errors are handled gracefully so the user can continue using
the app.
Change-Id: Ie4ce6c7970815b448f406bb5e64aeefda348aeed
Display transcriptions in a separate dialog accessible
by the 3 dots menu in the voicebox tables and by the
document icon in the call recordings list.
Change-Id: I6ad42760dc65b3df178afe23ac4c5f19a7c4cf43
On initUser the app tries to push items the
router before it is initialized, which results
in the error "Can't access property push,
this.$router is undefined". We add optional
chaining to prevent this from happening.
Change-Id: I6e2bf6336c8e91682962154219fc1c0bc1dbeacb
In CscPageCallRecording a watch function was directly
modifying the Vuex state, which is not allowed in
strict mode. This change ensures that each recording
object is cloned before modification, preventing
unintended mutations of store data.
Change-Id: Ie564da2ce31bd61772a05450be21a9a0717632ef
Use new /api/conversations properties to show
phonebook name matching. If the number is
not saved in the phonebook the app shows
the simple number.
Change-Id: Ia80a74c74ea250ed4f697b2897aba380d49bc8ca
Revert changes from commit 716d45f6 that altered setPreference.
The previous commit limited the function to handling only true/false
preferences, removing the ability to replace existing values.
This change restores the original behavior, allowing setPreference
to update existing preferences with new values, not just booleans.
Change-Id: I9658515d9714c30607a652fcc0ee3af86a0c8fcd
Remove the following obsolete attributes from the
Subscriber Profiles list in the Admin UI:
- rerouting_mode
- rerouting_codes
- fileshare
- sms
Change-Id: I6074322155329ad9d9c15f65782f3ae76eac7848
This update introduced many breaking changes.
Listed here the most important ones:
* quasar.conf.js file has been renamed
quasar.config.js.
* Quasar v4 replaced the old /src/index.template.html
with a new /index.html at the root of the project.
The special comment <!-- quasar:entry-point -->
is used to inject scripts/styles automatically.
* Use setupMiddlewares instead of onBeforeSetupMiddleware.
* proxy is now an array of proxy config objects.
* Dropped support for Vuex. We can still use Vuex as any
Vue plugin, but we have to manage everything (installing the
store, no store parameter in boot files, etc.).
We'll migrate to Pinia asap.
* Updated postcssrc according to docs
Change-Id: I585a3e2d17f666d9ca2773fa446d644f0fc201a2
- Verify and correct route access for admin-only CSC pages
- Update route guard logic to support:
* User role (admin / non-admin)
* Exact match on user profile attribute
* Presence of one or more profile attributes
* Required licenses (all must exist)
* Exact platfom feature
* Exact capability match
- Ensure route guards match menu visibility restrictions
- Document route guards and menu visibility logic
- Note: for fax settings, we use the extra variable
`isFaxServerSettingsActive` to determine whether the toggle
in the fax server menu should be on or off.
Change-Id: Id60a0e8b2145701ed4ae52d0859da46172076a89
Allow setting a free-text label when configuring lines
(Forward, Transfer, SpeedDial) with a custom entry.
The label is only applied if a target number is set.
Change-Id: Ida316ac79d454145ae1238ca5d297bff28c92af7
Previously, the arrays for weekdays and months didn’t match
the values used in admin-ui (Sunday=1, Saturday=7, January=1,
December=12). This commit updates the calculation function
to match admin-ui conventions, ensuring consistency since
the data originates from the admin panel and is read-only here.
Change-Id: I121c18ffb901beaece19124865b88259ffcb2d3f
Updated access rules for ADMIN subscribers:
- "Fax Settings > Mail to Fax" is now always visible.
* Admin users: The "ACTIVE" toggle can be changed,
and content is editable.
* Non-Admin users: The "ACTIVE" toggle cannot be changed,
and content is editable.
- "PBX Configuration > Seats > ID > Fax Settings > Mail to Fax" is
now always visible
* Admin users: The "ACTIVE" toggle can now be changed,
and content is editable.
* Non-Admin users: menu not visible
Change-Id: I1f30be27fde8a20092d8321e128f5d27dceec734
* Run yarn outdated and run through the list
to upgrade all libs but @quasar/app-webpack
and related libs. this will be done in a
separate commit.
* Remove parseuri because it is not used anywhere
in fact the project has a custom SIP URI parsing
implementation in sip-uri-parse.js.
* Remove jwt-decode because it is not used in fact
JWT decoding is manually implemented using native
browser functions.
* Updating to glob@11 where the glob.sync() method
is no longer accessible, but requires to be
imported directly from globModule.
* Remove eventsource:
- No Direct Usage: I could not find any direct imports,
requires, or uses of the eventsource package or
EventSource APIs in the codebase.
- Security Updates: The package was updated on
January 11, 2023, from version 1.1.1 to 2.0.2 as
part of a security updates (MT#56339).
- No Indirect Dependencies: The yarn why eventsource
command confirmed that no other packages depend on
eventsource.
- No Build Process Integration: I didn't find any
references to eventsource in the build config files
or webpack configurations.
- No SSE Implementation: While we handle media streams
for calls, in my understanding they use WebRTC or
similar technologies, not Server-Sent Events which,
in my understanding, is what eventsource is designed
for.
* Remove eslint-plugin-standard as it's not longer needed
by standard and eslint-config-standard.
* Upgrading eslint-plugin-vue required adding
vue-eslint-parser as a peer dependency and
required some changes to since new warnings.
Change-Id: I8f582275ae344f0ede7520136deba30c4d94ffd7
After improving the handling of long words with
commit 0340bd7e3c
The csc_Call bar was misplaced a few pixels.
This commit aligns it to the menu column
to avoid any overlapping.
Change-Id: Ic8f8c6bbfa11bb3190c93612562dfc6b4a4b0055
The CSV download and CDR table used identical requests, differing only in
the Accept header. Browsers cached the CSV response, causing the table to
fail to load. Disabled caching on the download request to avoid conflicts.
Change-Id: I21c351d39a36dae787af2acdc1b0ef66c792f37c
Add a button to download the PBX statistics
in a CSV file. The added button calls the
/conversations endpoint with the same filters
and pagination used to load the table with
Accept: 'text/csv' in the headers.
Change-Id: I2b148aa6fe6cb6627d5700ed71e139579181b891
A new button to activate the new 'dnd' subscriber preference
has been added to the CSC under the 'Call Settings>General' page.
Change-Id: I00a4c845b098c46fcdfdfbb246f97cebf7a82ae1
For outgoing or incoming calls show the
name saved in the phonebook (if it exists).
Note when retrieving phonebook entries
we always return the first entry.
As a result of that:
- if there are duplicates we only show
one name.
- if there isn't an exact match, as per
today, it won't find any entries.
Change-Id: I5c4307b8e22e6bc65f8efe159867d462d72f0d0d
* Add a search field to search for contacts
by Name, Phone number or the property Shared.
Note, the name and phone search use the wild card
before and after the typed string.
* Move call button outside the 3 dots menus
for easier access.
Change-Id: I2c135d744a66c921a028dcece4a889b482ccd33f
When the German translation is on, long words
are not readable without moving the side bar.
This commit increases the size of the side
menu and reduces the indent of sub-menus
Change-Id: Idb09587fe58907347f2461d6adc9a2a2706125b7
Show entries from customer, reseller, and other
subscribers (same customer) in subscriber phonebook
by using `include=all` and filtering by
`subscriber_id=id` in API call.
Disable editing for entries not owned by the subscriber.
Change-Id: Ic95fbb926b7e31d31ad7a0a5a5646c7867c5bd3a
A new "Seats" button has been added to the subscriber phonebook section,
allowing users to view all available seats and initiate callbacks
directly from the list.
Change-Id: Icb5b21b7394e9008617b27770142fd0ed83f68a8
Clicking the 3-dot menu on a call list entry now
shows an "Add to Phonebook" option.
When selected, the user is redirected to
/user/subscriber-phonebook/create with the NUMBER field
pre-filled from the selected call.
Change-Id: I80ee9ba5e0080f6859db21623d19d9f9b89f3052
Subscriber can now use 2FA with API v1.
2FA can be enabled from the admin portal:
- at domain level from domain preferences.
- at subscriber level from subscriber preferences.
Flow when 2fa is enabled:
- subscriber attempts login with username and PW
- scenario1 --> 1st LOGIN:
* request returns 403 Invalid OTP
* UI shows QR code (with the possibility to
visualize it as a string), instructions on
how to use 2FA and a input for OTP token
* once relevant info are submitted the user is logged in
- scenario2 --> NOT 1st LOGIN:
* request returns 400 no OTP
* UI shows only input for OTP token
* once relevant info are submitted the user is logged in
Change-Id: Ief1ed703d3d1cfa896fe62a2c7a55897260d2cfe
Listed here the changes:
- change properties accessed directly
from state with computed properties
that handles null cases
- Fix typos for subcriberListState
and subcriberListError
- Improve route watcher in
CscPagePbxDeviceDetails
- add a method to load only thumbnails
instead of full set of data for
the device profiles to improve
performance.
- removed 1000 rows for loadProfiles()
as it was too slow. We expect max 150
devices so it was set to 300 rows.
Note, more refactoring will be needed.
Change-Id: Iefe0328052174f0bb93f8cdbae59f77257592592
apiGet and apiPost assign the full options
object to the variable path
rather then options.path
In this commit we fix the bug.
Change-Id: I2379c4038a7fb70183ad2c6a25252413895122ad
In case the CSC was configured to work in mixed mode
(www_admin.http_csc.csc_js_enable == 'mixed') then the
OLD CSC page of the customer details was displayed on
the new CSC for administrative subscribers.
This was added in commit 0354615428
The OLD CSC is not fully deprecated so also the access
to this page should be removed.
Change-Id: Ic791fb85c2039ce2c3e801b3ca826bee5a4c7e7c
The Send Fax icon was displayed in the PBX Configuration
even when the functionality was not enabled in the fax settings.
This was caused by the ability to activate
the feature at the seat or group level.
The logic has been corrected, and the Send Fax functionality
now appears only when it is properly enabled for the user.
Change-Id: I02358f12eaf1a5543d2c6552e21d4452c56acdc6
If a pilot admin subscriber tries to change
the After Ring timeout for CFU set on one
of the seats, the CF config crashes
and change is not applied. This happens
because we are not passing the
subscriber_id of the Seat. In fact the
change in the CF is applied to the logged
in user instead. In this commit we pass
the subscriber_id attribute down the three
and improve the error handling.
Change-Id: I27b34a095263d18ca8d00b98bc3a528b4ee35f42
Two switch buttons added to group details as for seats.
These buttons update play_announce_before_call_setup and play_announce_before_cf preferences.
Change-Id: I230b9a8d62b34a2e013a326ad4d50403b82d824a
CSC-UI has been changed so that, during a blind transfer, the
Referred-By header is customized with local identity URI.
Without this customisation, jssip puts blindly the subscriber username
which is not always what kamailio proxy expects.
Having correct Referred-By header is important because kamailio proxy
uses this header in order to identify the transferor in a blind transfer call.
In particular, kamailio proxy checks if Referred-By matches custom header
P-Xfer-Firstcall-Callee-To, in this case B is recogized as transferor.
Change-Id: If149b34c16a5dc13116f8fea9a6d8046498753cd
All functions in the src/store files handle errors from the backend.
We now commit an error message that returns the backend error.
All promise-based functions in src/store/files
have now been replaced with try/catch.
Change-Id: Ia315d122809f0b9ae66230c83fb48454c904d722
App was crashing when user was refreshing
page on page /pbx-configuration/device/${id}
This happens because the logic to load all
necessary resources is a bit tangled. This
commit attempts to tidy up things without
inserting breaking changes.
Change-Id: I868678fcc6ed181697a5f3825d41940429785375