ub-server #

Added #

5.22.1 2022-01-06 #
  • new method App.getUserSessionsCount
  • new parameter in config security.userSessionMode (require @unitybase/uba@5.22). Possible values:
    • Multiple: allow multiple concurrent sessions for the same user (default, the same behavior as before UB 5.22)
    • Displacing: each new session displace all older sessions for the same user. If older sessions exists - logs into uba_audit with actionType=SECURITY_VIOLATION and text existed sessions are displaced
    • Singleton: throws in case user is already logged in. Logs into uba_audit with actionType=SECURITY_VIOLATION and text ubErrAnotherSessionExists, UI shows error Access deny. User is already logged in, may be from another browser tab or another computer WARNING - values other when Multiple should be used only on instances what works with end users (clients are browsers)
  • new private methods _App.sessionsList and _App.sessionRemove - used by uba_session to implement virtual entity with active user sessions

Changed #

5.22.1 2022-01-06 #
  • automatically generated entities for the aclRls mixin are no longer displayed in details (customSettings: { hiddenInDetails: true } are added for attributes)

  • speed up SQL generation from UBQL especially for entities with mapping (active mapping is calculated during server startup instead of each UBQL)

  • speed up parametrized SQLs (~ 8900 -> 9000 RPS on /dbRaw TechEmpower benchmark): in case query contains only ? parameters, or no parameters at all - prevents creating new parameters object and use passed by caller.

    BREAKING in case ? parameters count in query !== passed parameters count - servet throws an exception; Before this changes extra parameters were ignored

Removed #

5.22.1 2022-01-06 #
  • entity metafile: mapping.customSQL un-documented property is no longer supported (removed)

Fixed #

5.22.1 2022-01-06 #
  • Prometheus file system (fsObserve) and HTTP (httpObserve) metrics: prevent produce a -nan as a *_sum histogram member for very fast (<1 ms) fs/HTTP responses

@unitybase/adminui-vue #

Added #

5.22.1 2022-01-14 #
  • new icons: u-icon-view-versions and u-icon-create-version
  • processing module now have LOAD_COLLECTION_DATA mutation, which contains logic similar to LOAD_DATA, but for a collection item
5.22.0 2022-01-09 #
  • USidebar: show shortcut description as a hint

Changed #

5.22.1 2022-01-14 #
  • UButton.type property validator accept only 'submit', 'reset', 'button' according to "type" property doc on MDN Before this fix any value is accepted, and in case developer pass something non-valid, button type is changed to submit (by HTML), so such button react on Enter keypress

Fixed #

5.22.1 2022-01-14 #
  • Vue forms, now after saving collection items, state is changes in vuex store using the new LOAD_COLLECTION_DATA mutation, instead of LOAD_COLLECTION_PARTIAL, which is consistent with approach for master entity instance and fixes problem with localized attributes, which saved values were not returned from server, because they are not in the fieldList, and form remains dirty
  • UDropdown: popper now hides when tab is closing (for example user click on filter or sort button and close form tab) [UBDF-14766]
5.22.0 2022-01-09 #
  • UTableEntity: click on the sort button on the toolbar raised an error in case table column has been already selected to sort table rows
  • USelectEntity will render options list with key = ID || valueAttribute, this prevents rendering errors with duplicate keys when valueAttribute is a string. If option does not contain an ID, then the valueAttribute will be the key.

@unitybase/adminui-pub #

Added #

5.22.0 2022-01-09 #
  • UBStoreManager: add description to the shortcut attributes

Changed #

5.22.0 2022-01-09 #
  • UB.ux.Multifilter: for composite attributes in fieldList without flag simpleFilter: true, build filter based on the full attribute name instead of its first part
  • allow use non-numeric instanceID in doCommand (string for example)

@unitybase/cs-shared #

Added #

5.22.0 2022-01-09 #
  • Repository and DataStore now supports use a replicated read-only database connection for running a 'select' queries: Repository.misc({__useReplica: true}) and DataStore.runSQL(query, params, useReplica=false) In case replicatedAs parameter is defined for entity connection (EE edition only) server will choose replica, for SE or in case there is no replica for connection parameter is ignored.

Fixed #

5.22.1 2022-01-14 #
  • fix local sorting (formatByPattern.collationCompare):

    • for Dates: takes into account what Date's must be compared using Date.getTime()
    • empty values (null, undefined) is always less when any over

    For end user this mean valid sorting of cached data stores.

5.22.0 2022-01-09 #
  • formatByPattern.collationCompare now uses valid language in case @unitybase/cs-shared module is loaded twice (prevent resets global._collator if already defined)

@unitybase/ub-pub #

Added #

5.22.0 2022-01-09 #
  • UBConnection will handle a 403 Forbidden server-side error response and raise a UB.UBAbort message instead of InternalServerError. This response occurs when a user tries to retrieve data from the server but fails the server's data access validation with status code 403.
  • translation for ubErrAnotherSessionExists error message for single session violation if security.userSessionMode: "Singleton" in config

Fixed #

5.22.0 2022-01-09 #
  • nodeJS compatibility: transport.js, account that readystatechange event might be raised after "done" state The xmlhttprequest module, which used in NodeJS environment, in case of errors, such as socket closed, might fire readystatechange with state "DONE" (4) twice.
  • Allow to pass {timeout: 0} to xhr - prevent overriding 0 value with default timeout

@unitybase/ub #

Added #

5.22.24 2022-01-14 #
  • new method DataStore.setColumnName(columnIdx, newColumnName) (require UB@5.22.2). allow set name for column to be used during serializing DataStore into JSON or response
// change column name in HTTP response for select method
entity.on('select:after', ctx => {
  const ccIdx = ctx.mParams.fieldList.indexOf('category.code')
  if (ccIdx !== -1) {
    ctx.dataStore.setColumnName(ccIdx, 'categoryCode')
  }
// change column name in HTTP response for custom method
entity.customSelect = function (ctx) {
  UB.Repository('tst_document').attrs('ID', 'category.code').limit(10).select(ctx.dataStore)
  ctx.dataStore.setColumnName(1, 'categoryCode')
  // caller got categoryCode instead of category.code
// change column name for custom SQL
store = new UB.DataStore('my_entity')
store.runSQL('select 1 from dual', {})
store.setColumnName(0, 'dummy')
const obj = store.getAsJsObject() // obj will be [{dummy: 1}]
  • allLocales in includeDomain mode (called as /allLocales?lang=LL&includeDomain=1) endpoint now includes localizations for description and documentation of all entities and attributes. That allows using the following constructs in ub-migrate:
       - bpm_TaskClass:
           description: {$i18n: bpm_TaskClass#description}
    

i18n from @unitybase/ub-pub also can localize such attrs UB.i18n('bpm_TaskClass#description') but uses info from domain (more efficient)

@unitybase/uba #

Added #

5.22.0 2022-01-09 #
  • new ubConfig security parameter security.userSessionMode - allows control user sessions creation(require UB 5.22). Possible values:
    • Multiple: allow multiple concurrent sessions for the same user (default, the same behavior as before UB 5.22)
    • Displacing: each new session displace all older sessions for the same user. If older sessions exists - logs into uba_audit with actionType=SECURITY_VIOLATION and text existed sessions are displaced
    • Singleton: throws in case user is already logged in. Logs into uba_audit with actionType=SECURITY_VIOLATION and text ubErrAnotherSessionExists, UI shows error Access deny. User is already logged in, may be from another browser tab or another computer WARNING - values other when Multiple should be used only on instances what works with end users (clients are browsers)
  • new method App.getUserSessionsCount
  • new entity uba_session: virtual entity what allows Supervisor view list of the active sessions and remove sessions ; Corresponding shortcut is Administrative->Security->Users Sessions
  • added index by uba_subject.code
  • DialogTable.vue - it is multiselection table in dialog window. Is based on U-Table

Changed #

5.22.0 2022-01-09 #
  • uba_als-fm.vue- made new form. Implemented editing of a role that already exists. Task
  • English (en) localization for desktop description: the words are capitalized according to English rules for captions
  • audit trail form will show changes for all mixin-attributes (mi_dateFrom, mi_dateTo and others). Before this fix, only mi_wfState attribute was displayed. After this only attributes, added by mStorage mixin are omitted.
  • en localization of the caption of uba_usergroup entity: User Groups => User Group Membership. The change is made in order to avoid duplication - User Groups caption is already used by uba_group entity.

@unitybase/ubcli #

Added #

5.22.0 2022-01-09 #
  • Oracle: ubcli initDB will create GRANT EXECUTE ON CTXSYS.CTX_DDL (catalogue indexes)
  • ubcli generateDDL: added support for COLUMNSTORE indexes for SQL Server in case dbExtension.type = 'COLUMNSTORE' in meta file

Fixed #

5.22.0 2022-01-09 #
  • BREAKING Oracle: ubcli initDB will create user with grants for DDL statements ONLY in current schema. For security reasons ANY grants GRANT ALTER ANY * and GRANT CREATE ANY * are removed.

@unitybase/ubs #

Added #

5.22.0 2022-01-09 #
  • added "Loading.." mask during exports report to XLSX