* fix updateSharedValue to be less flacky: it was using
the reference of row, mutated, to make the backend request.
It now use a value stored in a variable.
* amend getList to make sure we pass the default page (1)
when looking for all rows with api v1.
Change-Id: Ia8c4fcb1547c16a6a3e862f864fbc5aecda3e065
(cherry picked from commit 9db53bc3ce)
Our nightly tests flagged the fact that
the feature was unstable and unrealiable.
Changes:
* Extract subscriber phonebook api and state
* Change direct use of http in the sub-phonebook
method to use the relevant method in common.js
* Simplify logic to PATCH single properties
with a unique PUT in the Phonebook entry form
* Amend getList, handleResponseError and
put to allow use with API v2 endpoints
* Amend translations and methods to replace
"phonebook" with "phonebook entry" where
necessary
Change-Id: I189d45fe426a1ded400a251d7efdfa72f76f9061
(cherry picked from commit ff40864da0)
- Keep callNumberInput getter returning full input for display purposes
- Use callNumberNormalized getter to strip domain before making calls
- Add callNumberNormalized to component's mapped getters
- Update startCall validation to use normalized number
Change-Id: I4172a4f426bf7f827e3ff717a901b8a64f4264d1
(cherry picked from commit afd3e09d55)
Trickle ICE candidate updates were not sent through
to kamailio/rtpengine. This was happening because
there was not ICE configuration.
Change-Id: I2a3ae1ab92ac9d6e766bd46915930fd553a6ff26
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
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
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
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
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
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
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
- The ban error is now handled, and an error message is displayed
when a user is banned.
- The translation of the error message has been added.
Change-Id: I3fc4c8d18136f4954b2cb9ccd7b896688e0f20de
Review all instances of the console object (such as console.info, console.error, console.warn ...)
in the CSC repository
Change-Id: I360164516748cc7412c1fa2023db3445f01f53ac
*Users can now add/select a B-number
set when creating a call forward.
Before this commit, this was only
possible from the admin panel.
Note, users cannot delete or amend
B-numbers created by someone else
(e.g. if a PBX admin user creates
a B-number for a Seat,the Seat-User
won't be able to edit it).
*Fix the way we handle sourceset
deletion ensuring data is reloaded.
Change-Id: I58cb639156fb9ac0386d6bf0f3ec26daa4ebf857
This commit fixes the following bugs:
* On refresh The PBX Seat Page crashes because the
seat id in the state goes back to null.
* PBX Seats and Groups pages' reactivity is not
working, in fact the components are not refreshed
upon manually changing the group or seat id in the URL.
* When user changes a destination that belonged
to admin user the app was getting stuck in an
infinite loop now we show the permission error.
* When user deletes a CF previously set by the admin,
or a mapping containing the above, the app was crashing.
We now delete the mapping and show a warning informing
the user if the associated destination set belongs
to admin.
* When seat user creates a new CF all CF previously
created by admin were disappearing because only
destinations filtered by csc users were retrieved
after the creation fo a new mapping instead of all
the available destinations.
* Time set created in admin were visualised as "...".
We now show the string "Custom time set" and show
a formatted summary of the details on click.
* Not all timesets were shown in call forward page
because of the missing parameter "all: true" in
the getList config. getList or pagination in csc
needs proper reviewing.
Change-Id: I06faa0a1fd0db003cb7ed81328147897386830ff
Migrating from ^8.10.0 to 9.14.0 had breaking changes.
* We moved to a flat configuration and changed the amended the script to run lint.
* We upgraded all eslint relevant libraries/plugins.
* We opened another ticket to review all the console.log/debug/info present in the repo.
Change-Id: Ie1e2c1ef49fc09cddbd9cc639505a1a65917bd35
The backend has been amended so that when a call
is recorded on both sides (caller and callee),
if one of the two sides deletes the recording,
the item is only removed from their view and the other
party can still see the recording. To achieve this we
add a param subscriber_id into the delete request.
As well this commit fixes the pop-up appearing to confirm
the user wants to proceed with deletion. The pop-up
was appearing without title and message, now both
are shown.
Change-Id: I7808fd3fad819e3e194448d16e882502f0a29bc6
To make sure compatibility with previous versions
and avoid the app crashing, we are adding
a better handling of the case where security.password
object doesn't exist in platforminfo. This covers
the edge case where costumers with ad hoc solutions
cannot upgrade to latest templates version.
Change-Id: I8aef12170d2f3782424f8b12dc032b3d465fb6b6
The backend returns "403 - Password Expired" when user's
password is too old and we redirect the user to the
/changepassword page where they can update their pw.
Users will be required to insert username, current password,
new password and to retype the new one.
Success: user redirected to login page.
Failure: a banner with the error is shown for 10 seconds.
NOTE:
* Password requirements are always presented in the frontend
as guidelines but validations are not enforced.
It was a joint decision with the backend team not to expose
whether the web_validation is active on the platform.
* If the web_validation is active, the backend will respond
with a 422 and the error message will describe the missed
password requirements.
Change-Id: Ic8b34980ff3099712f72042294409a2eb8e9347f
Password requirements have been edited so that are not
hardcoded. They are stored in the config.yaml file
and passed to the frontend through the
platforminfo.security.password object.
We adapt the frontend to:
- pick this info
- display the precise requirements in a tooltip that appears
when users hoover on a password field
- adapt the relevant inputs validations accordingly
- update the password components to use the centralised
$errMsg() function to handle error messages.
- fix weird behaviour of retype password where was not
showing validation errors
- remove "score > 2" as a necessary condition to enable the
retype field
Change-Id: I0feea3d7c5c2ae977402c3576e883899117f8864
In the last version mr12.5 we increased the security standards for the subscriber's password.
Now it is mandatory to have:
* password length min 12 chars
* must have at least 3 digits
* must have at least 3 lowercase letters
* must have at least 3 uppercase letters
* must have at least 3 special chars
In this review we adapt the random password generator in the CSC.
Change-Id: I8f257e34f7df8c99ef776ea9262fa18c32aef4da
After having added license check is some of the CSC pages
we noticed that CSC call page cannot be accessed anymore
by CE users.
This commit fix this issue and also address a typo in the
required license to access the fax pages.
Change-Id: Ifc6cfa9b41cd53417da43f44a736076b82fcc9cb
Following the changes about the licenses, some API will now
return a "403 - License not available" error when the needed
license is not available to the user. In the frontend we handle
the licenses with two levels of protection:
1) We hide menus of missing licenses from the sidebar
2) We add a guard in boot/routes.js that would redirect to the
homepage any attempts to access the mentioned menus, in case
they are mistakenly shown.
Change-Id: I9e88473ee90935db9b2a234ff03aef1b3a44a97b
With the creation of the Customer Preferences Page we add the possibility for the subscriber's administrator to view and edit some of the preferences that are applied customer's wide.
We also refactored $errMsg, the function that handles validation error messages globally.
The reviewed function displays the error text based on the errorMessages methods in src/validators/index.js
Change-Id: Ic9a1b2eab9b71255026447a690d3426097cbaf93
When testing the bugfix mentioned in the ticket I found the below
bugs and proceeded with the fixes:
- cscCfGroupConditionDate: added try/catch to handle better errors.
Before the fix the component was gettign stuck on loading when
the backend was returning an error
- refactored post() in common.js to reflect sipwise js policy
- actions.js: fixed bug to pass correct timeSetId in the cfmapping
PATCH requests. Before the fix we were passing an object with all
the data of the new timeset rather than the id only and the backend
was complaining.
Change-Id: I7bfabaf7a1a2aea8c6034de0d8f76e2f90633cdb
Some conditions were not evaluating correctly as we are passing
empty strings instead of null/undefined values. We replaced the
nullish coellish operator with a simple or operator until we have
more time to review the incorrect use of empty strings in oppose of null
and undefined values in the entire app
Change-Id: Ifb8635976166830e0d32b88a27985a7661854acb
- Changing list view to 8 rows with 3 columns.
- Preferences/Edit are now open in a separate page.
- Adding the new 4 preferences ( - Admin Name/ Disable web GUI/ User config priority over-provisioning/FW upgrade disable) together with the existing parameters.
Change-Id: Iae92c3313c592f7662587f52d0d4c9293ba41a97