* In view mode, webpaswords are shown as '******'
* In edit mode, the generated or written password
is hidden
* A button with an eye icon can change wether the
password is shown or not
* When pushing 'Generate' button show '(modified)'
after the input
Change-Id: I494d61b0ea5808a1be0f518d0667bf75b9ab20d5
* The endpoint generates a jwt token and stores it in
Redis, then redirects to /v2/#/?v1_auth={token}
* Also added an id in DOM to indentify the Panel V1 login page
Change-Id: I307a3f457f88bbba04bb7735d60fa51bdc5d0438
* if there are no more *enabled* CFT left after editing
callforwards (simple/advanced) or if CFT is deleted,
the ringtimeout has to be removed.
Change-Id: Icfa2fb1db281a5a5b4b2edce28ad7b0d69ddf47c
* new c.users.role 'lintercept', that set to when an admin user has
enabled 'lawful_intercept' flag
* only Administrator page /api/admins and /api/interceptions are available for
the role
* 'lintercept' role can only see own user and only change password
and email
Change-Id: Iadcb022a124afbd77b224e734026f380af0170e8
We have several pages with Create/Download/Upload buttons,
for example the page 'Phonebook' has the proper buttons order
in one line layout:
> [Create] [Download] [Upload]
while on the page 'Call List Suppressions' it was two lines:
> [Download] [Upload]
> [Create]
Let's use common buttons order on page 'Call List Suppressions'.
Change-Id: Ic6828a8c825590df43879e20dfb7ea7622db568f
The initial commit d31797c tried to hide back button using helper 'datatables'
while some ngcp-panel pages have separate 'back' button definition.
Let's mute all of them for ngcp-admin-ui case (framed=1).
Change-Id: Ib2ed3e9362a26a1c4a353e2f615138f8b6ab6461
* Introduce endopint '/resetpassword' for asking for
password reset using admin username
* Create form for introducing username
* Create url with unique token pointing to '/recoverpassword'
where admin user can introduce new password and email
said url to admin's email address
* Create form for setting new password
* Store username and unique token in Redis expiring
in 5 minutes to store password reset attempt
and identify it when user accesses url in email
* Limit admin access to be able to only change own password
due to new password reset possibility as requested in
TT#76110
Change-Id: Ie3acb961444398afa5b2fdc85e3ca8ceccf9244a
* Remove headers, menu, site title and footer if
parameter 'framed' is sent
* Persist 'framed' in the session once it's sent
and only restore header/footer once 'framed' is
sent again with the value 0
Change-Id: Ie1dcc698b901ea3c659a05391ffcdc882113ef13
- persist prov tmeplates in the database: create, update
and permanently remove them again.
- prov templates from config.yml are still supported,
but cannot be edited though. the templates from
config.yml are merged with those from the db.
- each reseller can have their own prov templates,
while the prov templates from config.yml are visible
to all.
- YAML syntax highlighting and parse check when saving.
Scripting language (perl/javascript) is currently parsed
when executing a provisioning templates only. It is
possible to further extend the parsing checks.
- the prov template "name" + reseller is the unique
identifier. relevant also for the command line tool.
Change-Id: I58d7c54fa82fe512b263b3219bfc84d7e49c56a8
* Change the way webpassword is handled accross
NGCP Panel UI/API to comply with new password
encryption
* At login, if password is not encrypted with
high cost due to the ngcp-bcrypt-webpassword
script, encrypt it with proper cost
* Accept old password format as well until all
webpasswords are encrypted
Change-Id: Iefa9584a62ab4b7d2a224d10bdd415e9cbb8dfb5
* The search field was disabled because of long
time filtering duration when caching it for calls
but it is desirable to cache it in other places
* Added condition to not cache the field only in
calls table
Change-Id: I7a359c60f5fcc016fe37a587905ac06e2e81a366
Even if kamailo supports negative q-value it will handle them
as positive one creating confusion in customers.
Change-Id: Ia74f798c48191af1aacca5660448b664883b9860
* Enabled stateSave but only for row
number because it was previously
disabled for caching the search box
Change-Id: Ie1bd42dc890bd574167db3a073f8350c3d90f043
* Change datepicker to datetimepicker
to be able to select time as well
* datetimepicker is now available only
for call lists since this is where
a more thorough filtering is needed
in case the limit of 1000 entries is
passed
Change-Id: I48107fa8f7c4d4ee9b40044c8ae5f7842e35c2a5
* Remove '(details)' and make the status
text clickable
* If no errors, don't make status clickable
and not show the modal
Change-Id: I1ae1d05231aea450f99649996acdb63fcd2e6f75
* Retrieve statistics details from
ngcp-collective-check
* Restore statistics widget to display
either "All services running", "Errors"
or "Warnings" according to collective-
check result
* Create pop-up modal to display ngcp-
collective-check results
Change-Id: I094a51ad1905d2bf968775dd43480c94a7a440b8
* Controller/Domain missed privileges for
ccareadmin/ccare roles
* Fix ccareadmin role typo in customer templates
preventing "Create Susbcriber" button to show up for the role
Change-Id: I05bb520912ad0f1f49a0097d7443081d40aa7426
* Ajax request failed when vouchers was
not set in ngcp_panel.conf under features
because it redirected to denied_page;
moved redirect to topup_voucher method
in Customer.pm because it doesn't work
on ajax requests
* Also hide the top up voucher button if
voucher option is not set under features
in ngcp_panel.conf
Change-Id: I888ac46e9634d75163241cdb4b59b00a2ca08b2f
* ccareadmin and ccare roles have full access to
Customers, Subscribers and their preferences/settings,
and read-only access to BillingProfiles,InvoceTemplates,
EmailTemplates
* ccare role is restricted to the related reseller
Change-Id: I6cf7d3adf912f0fa98d1ef5c02abea2f4331ec4b
* the system status widget is disabled because
it contains static "OK" values. will be reenabled
once the values represent the actual system state.
Change-Id: I4dbdb64d423911e5a40f0d36e9fb769e0c1424f1
When clicking into a datatables search field, then moving the mouse over
a result row of a different datatable, then start typing in the search
field, a hover() seems to trigger a handlerOut event, making the buttons
to disappear.
Using two separate onmouseover() and onmouseout() events instead of the
hover() seems to fix this.
Change-Id: I5c3e43f226faa3455db514ada3543120d5313e76
And also fix description for Location creation form
All Customer controller fix implemented a little out of common way to handle customer detatils forms
Forms on customer details page use common code on the bottom of the customer/details.tt. Phonebook forms use helpers/datatables forms related code. It allows to avoid stashed "description" parameter, that is totally related to View (template) and generates correct name for the edit form.
Change-Id: I2a16d6861cd2d847f68bd02245058c9a4535a0a9
The is_devid and devid_alias were not properly saved and re-loaded
in edit, nor was their status shown in the master data.
Change-Id: If3403b5baa6135b4171e7b523aaa56de0fc5cb10
* UI: subscriber Preferences" page now contains
a new "Header Manipulations" tab that enables
setting header manipulation rules per subscriber.
They are applied in the following order:
- domain header rule set is applied (if defined)
- subscriber header rules are applied (if defined)
An internal header rule set is now created per subscriber
automatically, if used from the UI
* API: /api/headerrulesets now supports "subsriber_id",
when a whole collection is fetched without ?subscriber_id
only records where subscriber_id = NULL are returned
by default
* fix "read only" UI elements representation in the datable
for header rule sets, rules, conditions, actions
Change-Id: I3e80d1899c577055f3603e80bb3a13d70c5b22cf
* header manipulations related endpoints are now
rendered with the datatables and support pagination,
and search
Change-Id: I264d2c55ec97199714159bbc2d1d3181e23880fb
* sound_sets are now allowed for peering hosts
and since peerings are not bound to resellers
and only managed by the administrators of the platform,
it is possible to set any soundset from any reseller,
the only limitation is sound sets that are assigned to
a contract cannot be used for a peering host
Change-Id: I438395d989dbc917bef2ad87d1c80201722fa247
Add test script for API
Fix DateTime create/update issue in TimeSets API (get2put case)
(add and edit functionlity used raw/inflated data respecively)
Add datetimepicker field
Change-Id: If724b7350658c306dbbecbc04309d1d1c0b4a3e2
the "Try it out" button is disabled for the operations:
PUT, PATCH, DELETE, POST
and therefore only enabled for GET unless the special request param is used.
Change-Id: Iee8338c18e3e8053d6349a20315a7ef3c2f203d5
translate forms in NGCP::Panel::Form (the caching module) instead of in the
templates. This gives us better control to avoid translating cached forms
multiple times. Multiple translations lead to errors due to escaping of
special symbols and simply fails from one (non-english) language to another.
Change-Id: I234b22cb70dc068530e4a9f241cb9bb5653e1959
When clicking on the "Dashboard Administration" link in the Monitoring
and Statistics menu of the panel, grant administrative access to the
grafana dashboard.
This privilege elevation is kept in the session until you click any
of the other dashboard links in the Monitoring and Statistics menu.
Change-Id: I703a05b74fc6943ecac82cca5acb2d71674028e7
* When enabling password_sip/web_validate, panel checks password
against username (web and sip, respectively), and runs it through
cracklib to enforce a reasonably strong password.
* Add auto-generate buttons next to web/sip password.
Change-Id: I11f5f6c2d69dc5658f298094f7d17d26d0a26ee1
* enables a mode for cf source sets, where all numbers are
considered as whitelisted or blacklisted (similar to the
NCOS levels mode)
Change-Id: I84e76e5ba717050c48bcaf5c1fd5f67ed5582cab
* RRDs are gone for good, link statistics to grafana.
* Directly link into individual dashboards in new tab/window,
since we don't iframe grafana (for now?)
Change-Id: Ica37ab5a9c9d50ed63142eb09e3b1de568c95aba
- a new feature, "Peering Overview" under the "Tools" menu that
shows a consolidated table of peering rules, peering groups and
peering hosts with a quick links to the related edit dialogs
- added a group selection for "peering rule edit" dialogs that
enables a possibility to move a peering rule into another
peering group
- changed the "back" uri in the "peering host" and "peering rule"
dialogs to return back to the previous uri instead of forcing it
to /peering, that is needed to call those dialogs from
/peeringoverview and then get back to the original uri upon
completion
- dynamic columns support
- separate outbound and inbound peering rules respresentation
- export to "CSV", also with the "Search" filter support
- add dynamic column join detection excluding excessive joins
if no related columns are selected
Change-Id: I71b4c62c4583989baacfc166f08e965c4464e4b2
-undo unique lnp_numbers: undo misleading unique keys
-retain lnp_provider delete cascade restriction
-api: wire lnp_numbers_actual
-lnpnumbers collection pagination request takes several
seconds (up to tens of for 200k lnp numbers), too slow
especially for GET /api/lnpnumbers/?number=.. lookups
-query param is properly injected into the virtual view
sql query, so the lookup is fast now.
-panel UI custom datatable filter to switch between
complete history (all records) and actual portings
-"terminate" lnp number: DELETE /api/lnpnumbers/?number=x
+special use-case for melita's crm
+all empty or future "end" timestamps of records
are set to now(), so a subsequent listing shows no
records any more.
-number parameter is forced, other collection query params
are currently not supported for DELETE
Change-Id: I7b69d16a2d4f38ea84fc1cc0b407fa67e0f5ef8b
+all the contact's fields are exported to javascript
side. a custom renderer could also be used to display
a tooltip with all the contact's fields.
Change-Id: Icadcb07701d13ad4a619f429b9245f203d79b051
If set and a call is done within a pbx customer, the call is blocked
in blacklist, and is allowed in whitelist.
Change-Id: Ib43e5a45525a69e2b9dd9537dabddf10dfc006d1
format is
<external_documentation>
<link>
name Google
url http://elgoog.im/
</link>
<link>
name Sipwise Website
url https://sipwise.com/
</link>
</external_documentation>
Change-Id: Id9283f1df5fb5933fa6523cbf2f01a458fa21475
using (de|en)code_base64url because the callid can contain a lot of characters,
which are invalid in a url including forward slash and questionmark.
see https://tools.ietf.org/html/rfc3261#section-25
Change-Id: I9818e0e06e251c3f58a8b26e46973176162103c1
documentation for api and handbook is shown to the reseller. he can access
the handbook, on the mgm-interface (1443) and the api is available anyway
with appropriate credentials
Change-Id: I619c844bc216ca9667989db64f527d0fa41a722f
this is neccessary to support multiple threads
plus remove the "handle" indirection
plus remove Moo - OO has no advantage here
Change-Id: I1c0657fd454c5dc2001404920abfadd01aa0a953
because it contains the NCOS Level name (or soundset name), which may contain
invalid l10n escape-characters, and translation of it would be wrong anyway.
Change-Id: If28d235462441ca906b7d5cf39941186e7bd98ce
using a direct relation to the required widgets instead of MooseX::Object::Pluggable
this also means additional widgets can easily enabled/disabled by the platform admin
in a next step, we can also refactor topmenu widget, to remove this completely
Change-Id: I890b47edc68b6d1df259d71075bda3c04045871e
If we have a 20M lnp file to upload, putting everything into the
numbers array is killing the fcgi process on low-mem machines.
Make sure to write each 2k chunk to DB and clear the array
afterwards.
Change-Id: I857be5d6a0195607b1fcb86db3327a9fd10ce5f1
Make LNP number params optional.
Fix clearing optional LNP number params.
Fix rewrite rule inflation, deflation and validation (doesn't seem
related to the lnp rwr changes, just started to not work anymore?).
Change-Id: If2278ad6dceacb84facd0397388ee2895b120b00
+dashboard uses a similar query for the survey
info visible to subscribers, which should now
load faster as well.
+the filter dropdown select+update table was
generally not working properly (MT#17323):
-fnFilter() does net necesarily trigger new
ajax requests, but searches in clientside
table store. the list stays empty, if there
is no direction column present, to match
"in" or "out" literals.
-using sSearch for specifying in/out filter
disallows to enter other search params in
text search field.
+union all now also used for the api
subscriber_id filter
Change-Id: Ia777504b9ade7acb34c66cb899f366ce029c905f