new UModal component - a styled HTML <dialog> element with header, body and footer.
Warning - components what uses popper-js (el-select, el-dropdown-menu, el-date-picker) currently do not
work correctly inside UModal, because appends dropdown to HTML body (append-to-body)
Adapt UFileMultiple for displaying of mocked value for file attribute (absent size value is the mark).
The mocking is useful for displaying some placeholder with information for items with empty file attribute
EntityGridPanel: fixed regression from adminui-pub@5.24.22(2023-01-11) - relations with
customSettings.hiddenInDetails: true must be hidden from details (as before 2023-01-11).
The actual filtering is done using $App.filterDetails4UI, which can be customized.
message "Only members with 'Admin' role are allowed for assign a 'Admin' role to other members" is changed to <<<adminRoleCanBeAssignedOnlyByAdmin>>>
to be localized on client side
new property in entity metadata customSettings (for ub < 5.23.16 will be always {}).
customSettings for attributes exists for a long time, some project need the same but on entity level.
Do not pus a sensitive data to customSettings since it visible on client side.
For server-side only use privateSettings
new method App.isIPInBlackList(IP) - check IP match any of line from file specified in ubConfig.security.blackListFileName
new parameter in ubConfig security.blackListFileName - name of file with black list of network masks;
Each line in file should be in format IPMask; [#comment]. Example: 10.2.2.1/24; # bad local network.
Can be reloaded by sending SIGHUP signal or from js App.reloadConfig().
Default value is %UB_APPDATA%blackListIP.txt (resolved to /var/opt/unitybase/$UB_APP/blackListIP.txt in case started from systemd)
new methods for implementing 2FA App.confirmSession2faSecret = function (sessionID, secret) and Session.setExpected2faSecret(secret)
added support for IP black list - can be specified in ubConfig.security.blackListFileName (default is %UB_APPDATA%blackListIP.txt).
If user provide a valid credential for auth method but tries to log in from dangerous IP (for example - from shared hosting etc.)
such attempts will be denied, user got "Invalid username or password" error, and uba_audit entry with SECURITY_VIOLATION will be added
new endpoint secondFactorConfirm for 2FA authentication
if 2FA is enabled in config - new handler UB.Session.on('login', ubaGen2faOnLogin) will set a random 2FA token for
Session and fire secondFactorCodeReady for Session object. Application should add an event handler what send secret to user device
prevent exception req.getHeader(...) is undefined during user log-in if caller do not pass User-Agent header.
In ths case not passed! will be logged into uba_audit.userAgent
postgres DDL generator: allow using manually created schema\role with schema_name not equal to role_name (ubcli initDB gives the same name to schema and role)
ubcli autotest: models option. The model name should be strictly compared.
In the previous implementation passing -m dfx-ks-api applies all models like dfx, ks, ks-api