Commit 6e5f3b58 authored by Pavel Mashliakovskiy's avatar Pavel Mashliakovskiy 🤹🏻
Browse files

Merge branch 'feature/uba_ub-migrate_2' into 'master'

Feature/uba ub migrate 2

See merge request !1177
parents 10fd37d3 30d550ac
Pipeline #32641 skipped with stage
# gzip / deflate / gunzip / bunzip support for server-side UB with JSZip compatible API
On server side can be used as a direct (and much faster) replacement for `jszip`.
In addition:
- support opening a zip FILE (from file system path) for create/read/write. In this case zipped content
is written directly into file without addition memory consumption.
- `.file` method can accept base64 encoded content - will be decoded before adding to zip
- `.file` method can accept `path/to/existed/file` - will add passed file to ZIP using chunks (no addition memory consumption)
> For memory buffer compression speed is ~ 50Mb/s, decompression ~ 70Mb/s.
>
>In real life file adding/extraction speed is limited by HDD\SSD speed.
Example:
```javascript
const compressors = require('@unitybase/compressors');
const UZip = compressors.UZip
const uZip = new UZip('/some/file.zip')
uZip
.remove('file1251.txt')
.remove('file866.txt')
.file('newFile.txt', 'String file content', { type: 'string' })
.file('folder/fromBuf.txt', Buffer.from('String file content').toString('base64'), { base64: true })
.file('os-release.txt', '/etc/os-release', {isFilename: true})
.generate({
type: 'file',
filename: '/tmp/newArch.zip'
})
const readZ = new UZip('/tmp/newArch.zip')
const osVersion = readZ.file('os-release.txt').asText()
```
......@@ -8,12 +8,14 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
### Added
### Changed
- UBA model fill `ubs_settings` using migration YAML
- UBA model fill `ubs_settings` using migration YAML (05_settings.yml)
- UBA model fill roles and ELS using migration (01_roles.yml)
### Deprecated
### Removed
- migration from `@unitybase/uba` < 5 is *REMOVED* (expect all products are already migrated to v5)
### Fixed
## [5.20.27] - 2021-10-18
......
......@@ -218,6 +218,7 @@ module.exports = function runELSTest (options) {
entity: 'uba_els',
fieldList: ['ID'],
execParams: {
code: 'TEST_DENY_' + TEST_ENTITY,
entityMask: TEST_ENTITY,
methodMask: 'update',
ruleType: 'D',
......
# ELS for build-in roles
# roles itself are created during `ubcli initDB` command
# most ELS rules are defined as `custom` due to historical reasons (to keep the same rule code as before ub-migrate)
# in new files prefer to use one of `read`, `write, etc. rules instead of custom - see https://git-pub.intecracy.com/unitybase/ub-migrate#system-roles
$context:
type: roles
Everyone:
$amendment: true
description:
en: Everyone build-in role
uk: Будь хто (вбудована роль)
ru: Кто угодно (встроенная роль)
ka: ნებისმიერ მსურველს (ჩაშენებული როლი)
tg: Ҳама (роли дарунсохташуда)
uz: Hamma (o`rnatilgan rol)
nl: Iedereen (ingebouwde rol)
az: Hər kəsin qurduğu rol
els:
custom:
- UBA_AUDIT_SELECT_ONLY: "!uba_audit,[^s]*,Deny direct security audit operation even for all roles"
- UBA_SUBJECT_DENY: "!uba_subject,[iuda]*,Deny direct modification of UNITY uba_subject"
- UBA_AUDITTRAIL_SEL_ONLY: "!uba_auditTrail,[iuda]*,Deny direct audit operation even for all roles"
# UBA_ADMIN_ALL rule (allow all for Admin) is added during initDB
Admin:
$amendment: true
description:
en: Admin build-in role
uk: Адміністратор (вбудована роль)
ru: Администратор (встроенная роль)
ka: ადმინისტრატორი (ჩაშენებული როლი)
tg: Маъмурӣ (роли дарунсохташуда)
uz: Administrator (o`rnatilgan rol)
nl: Admin (ingebouwde rol)
az: İdarəçi rolu
Anonymous:
$amendment: true
description:
en: Anonymous build-in role
uk: Неавторизований користувач (вбудована роль)
ru: Неавторизованный пользователь (встроенная роль)
ka: უნებართვო მომხმარებელი (ჩაშენებული როლი)
tg: Истифодабарандаи беиҷозат (роли дарунсохташуда)
uz: Ruxsatsiz foydalanuvchi (o`rnatilgan rol)
nl: Ongeautoriseerde gebruiker (ingebouwde rol)
az: İcazəsiz istifadəçi (quraşdırılmış rol)
User:
$amendment: true
description:
en: Authorised user build-in role
uk: Авторизований користувач (вбудована роль)
ru: Авторизированный пользователь (встроенная роль)
ka: ავტორიზებული მომხმარებელი (ჩაშენებული როლი)
tg: Истифодабарандаи ваколатдор (роли дарунсохташуда)
uz: Vakolatli foydalanuvchi (o`rnatilgan rol)
nl: Geautoriseerde gebruiker (ingebouwde rol)
az: Səlahiyyətli istifadəçi (quraşdırılmış rol)
els:
custom:
- UBA_USER_LANGCH_EVERYONE: "uba_user,changeLanguage,Allow change language for any user"
- UBA_USER_UDATACH_USERS: "uba_user,setUDataKey,Allow set uData key for user"
- UBA_USER_READ_USERS: "uba_user,select,Allow read users list for registered user"
- UBA_USER_READ_GROUPS: "uba_group,select,Allow read available groups list for registered user"
- UBA_AUDIT_SECURE_EVENT: "uba_audit,secureBrowserEvent,Allow insert secureBrowserEvent for authorized user(UB DE)"
- UBA_USERCERT_READ: "uba_usercertificate,select,Allow read user certificates for registered users"
- UBA_USERCERT_READ_CERT_BIN: "uba_usercertificate,getCertificate,Allow read base64 representation of cert for registered users"
Supervisor:
$amendment: true
description:
en: Supervisor build-in role
uk: Адміністратор безпеки (вбудована роль)
ru: Администратор безопасности (встроенная роль)
ka: უსაფრთხოების ადმინისტრატორი (ჩაშენებული როლი)
tg: Маъмур оид ба амният (роли дарунсохт)
uz: Xavfsizlik ma`muri (o`rnatilgan rol)
nl: Beveiligingsbeheerder (ingebouwde rol)
az: Təhlükəsizlik Administratoru (quraşdırılmış rol)
els:
custom:
- UBA_USER_EDIT_SUPERVISOR: "uba_user,[iuda]*,Allow CUD operations on users for members of Supervisor group"
- UBA_USER_CHPWD_SUPERVISOR: "uba_user,changeOtherUserPassword,Allow change password for any user for members of Supervisor group"
- UBA_GROUP_EDIT_SUPERVISOR: "uba_group,[iuda]*,Allow CUD operations on security groups for members of Supervisor group"
- UBA_ROLE_READ_SUPERVISOR: "uba_role,select,Allow members of Supervisor group to read roles"
- UBA_USER_ROLE_EDIT_SUPERVISOR: "uba_userrole,[iuda]*,Allow grant a role to user for members of Supervisor group"
- UBA_USERROLE_READ_SUPERVISOR: "uba_userrole,select,Allow members of Supervisor group to read user roles"
- UBA_USER_GROUP_EDIT_SUPERVISOR: "uba_usergroup,[iuda]*,Allow grant a group to user for members of Supervisor group"
- UBA_USERGROUP_READ_SUPERVISOR: "uba_usergroup,select,Allow members of Supervisor group to read user groups"
- UBA_GROUPROLE_EDIT_SUPERVISOR: "uba_grouprole,[iuda]*,Allow grant a role to group for members of Supervisor group"
- UBA_GROUPROLE_READ_SUPERVISOR: "uba_grouprole,select,Allow members of Supervisor group to read groups roles"
- UBA_AUDIT_READ_SUPERVISOR: "uba_audit,select,Allow members of Supervisor group to read security audit"
- UBA_AUDITTRAIL_READ_SUPERVISOR: "uba_auditTrail,select,Allow members of Supervisor group to read audit trail"
- UBA_ADVSEC_EDIT_SUPERVISOR: "uba_advSecurity,[iuda]*,Allow CUD operations on advanced security for members of Supervisor group"
Developer:
$amendment: true
description:
en: Developer build-in role
uk: Розробник (вбудована роль)
ru: Разработчик (встроенная роль)
ka: დეველოპერი (ჩაშენებული როლი)
tg: Таҳиякунанда (роли дарунсохт)
uz: Ishlab chiquvchi (o`rnatilgan rol)
nl: Ontwikkelaar (ingebouwde rol)
az: İnkişaf etdirici (quraşdırılmış rol)
Monitor:
$amendment: true
description:
en: Monitoring build-in role
uk: Моніторинг (вбудована роль)
ru: Мониторинг (встроенная роль)
ka: მონიტორინგი (ჩაშენებული როლი)
tg: Мониторинг (роли дарунсохт)
uz: Monitoring (o`rnatilgan rol)
nl: Monitoring (ingebouwde rol)
az: Monitorinq (quraşdırılmış rol)
/**
* @author pavel.mash
* Create roles users / powerUsers / supervisors
*/
const csvLoader = require('@unitybase/base').dataLoader
const path = require('path')
/**
* Initial script for fill UnityBase Administration Entity Level Security
* Used by ubcli initialize command
* @param {ServerSession} session
*/
module.exports = function (session) {
let conn = session.connection
console.info('\tFill ELS for UBA model')
csvLoader.loadSimpleCSVData(conn, path.join(__dirname, 'uba_els.csv'), 'uba_els', 'code;entityMask;methodMask;ruleType;ruleRole;description'.split(';'), [
0, 1, 2, 3,
function (row) {
if (typeof row[4] === 'number') {
return row[4]
} else {
return conn.lookup('uba_role', 'ID', { expression: 'name', condition: 'equal', values: { name: row[4] } })
}
},
5], 1)
}
const loader = require('@unitybase/base').dataLoader
/**
* @author pavel.mash
* Navigation shortcuts localization to Ukrainian for UBA model
* Used by `ubcli initialize` command
* @param {ServerSession} session
*/
module.exports = function (session) {
function localize (localizationConfig) {
loader.localizeEntity(session, localizationConfig, __filename)
}
localize({
entity: 'uba_role',
keyAttribute: 'name',
localization: [
{ keyValue: 'Everyone', execParams: { description: 'ნებისმიერ მსურველს (ჩაშენებული როლი)' } },
{ keyValue: 'Admin', execParams: { description: 'ადმინისტრატორი (ჩაშენებული როლი)' } },
{ keyValue: 'Anonymous', execParams: { description: 'უნებართვო მომხმარებელი (ჩაშენებული როლი)' } },
{ keyValue: 'User', execParams: { description: 'ავტორიზებული მომხმარებელი (ჩაშენებული როლი)' } },
{ keyValue: 'Supervisor', execParams: { description: 'უსაფრთხოების ადმინისტრატორი (ჩაშენებული როლი)' } },
{ keyValue: 'Developer', execParams: { description: 'დეველოპერი (ჩაშენებული როლი)' } },
{ keyValue: 'Monitor', execParams: { description: 'მონიტორინგი (ჩაშენებული როლი)' } }
]
})
}
const loader = require('@unitybase/base').dataLoader
/**
* Navigation shortcuts localization to Russian for UBA model
* Used by `ubcli initialize` command
* @param {ServerSession} session
*/
module.exports = function (session) {
function localize (localizationConfig) {
loader.localizeEntity(session, localizationConfig, __filename)
}
localize({
entity: 'uba_role',
keyAttribute: 'name',
localization: [
{ keyValue: 'Everyone', execParams: { description: 'Iedereen (ingebouwde rol)' } },
{ keyValue: 'Admin', execParams: { description: 'Admin (ingebouwde rol)' } },
{ keyValue: 'Anonymous', execParams: { description: 'Ongeautoriseerde gebruiker (ingebouwde rol)' } },
{ keyValue: 'User', execParams: { description: 'Geautoriseerde gebruiker (ingebouwde rol)' } },
{ keyValue: 'Supervisor', execParams: { description: 'Beveiligingsbeheerder (ingebouwde rol)' } },
{ keyValue: 'Developer', execParams: { description: 'Ontwikkelaar (ingebouwde rol)' } },
{ keyValue: 'Monitor', execParams: { description: 'Monitoring (ingebouwde rol)' } }
]
})
}
const loader = require('@unitybase/base').dataLoader
/**
* Navigation shortcuts localization to Russian for UBA model
* Used by `ubcli initialize` command
* @param {ServerSession} session
*/
module.exports = function (session) {
function localize (localizationConfig) {
loader.localizeEntity(session, localizationConfig, __filename)
}
localize({
entity: 'uba_role',
keyAttribute: 'name',
localization: [
{ keyValue: 'Everyone', execParams: { description: 'Кто угодно (встроенная роль)' } },
{ keyValue: 'Admin', execParams: { description: 'Администратор (встроенная роль)' } },
{ keyValue: 'Anonymous', execParams: { description: 'Неавторизированный пользователь (встроенная роль)' } },
{ keyValue: 'User', execParams: { description: 'Авторизированный пользователь (встроенная роль)' } },
{ keyValue: 'Supervisor', execParams: { description: 'Администратор безопасности (встроенная роль)' } },
{ keyValue: 'Developer', execParams: { description: 'Разработчик (встроенная роль)' } },
{ keyValue: 'Monitor', execParams: { description: 'Мониторинг (встроенная роль)' } }
]
})
}
const loader = require('@unitybase/base').dataLoader
/**
* Navigation shortcuts localization to Tajik for UBA model
* Used by `ubcli initialize` command
* @param {ServerSession} session
*/
module.exports = function (session) {
function localize (localizationConfig) {
loader.localizeEntity(session, localizationConfig, __filename)
}
localize({
entity: 'uba_role',
keyAttribute: 'name',
localization: [
{ keyValue: 'Everyone', execParams: { description: 'Ҳама (роли дарунсохташуда)' } },
{ keyValue: 'Admin', execParams: { description: 'Маъмурӣ (роли дарунсохташуда)' } },
{ keyValue: 'Anonymous', execParams: { description: 'Истифодабарандаи беиҷозат (роли дарунсохташуда)' } },
{ keyValue: 'User', execParams: { description: 'Истифодабарандаи ваколатдор (роли дарунсохташуда)' } },
{ keyValue: 'Supervisor', execParams: { description: 'Маъмур оид ба амният (роли дарунсохт)' } },
{ keyValue: 'Developer', execParams: { description: 'Таҳиякунанда (роли дарунсохт)' } },
{ keyValue: 'Monitor', execParams: { description: 'Мониторинг (роли дарунсохт)' } }
]
})
}
const loader = require('@unitybase/base').dataLoader
/**
* Navigation shortcuts localization to Ukrainian for UBA model
* Used by `ubcli initialize` command
* @param {ServerSession} session
*/
module.exports = function (session) {
function localize (localizationConfig) {
loader.localizeEntity(session, localizationConfig, __filename)
}
localize({
entity: 'uba_role',
keyAttribute: 'name',
localization: [
{ keyValue: 'Everyone', execParams: { description: 'Будь хто (вбудована роль)' } },
{ keyValue: 'Admin', execParams: { description: 'Адміністратор (вбудована роль)' } },
{ keyValue: 'Anonymous', execParams: { description: 'Неавторизований користувач (вбудована роль)' } },
{ keyValue: 'User', execParams: { description: 'Авторизований користувач (вбудована роль)' } },
{ keyValue: 'Supervisor', execParams: { description: 'Адміністратор безпеки (вбудована роль)' } },
{ keyValue: 'Developer', execParams: { description: 'Розробник (вбудована роль)' } },
{ keyValue: 'Monitor', execParams: { description: 'Моніторинг (вбудована роль)' } }
]
})
}
const loader = require('@unitybase/base').dataLoader
/**
* Navigation shortcuts localization to Russian for UBA model
* Used by `ubcli initialize` command
* @param {ServerSession} session
*/
module.exports = function (session) {
function localize (localizationConfig) {
loader.localizeEntity(session, localizationConfig, __filename)
}
localize({
entity: 'uba_role',
keyAttribute: 'name',
localization: [
{ keyValue: 'Everyone', execParams: { description: 'Hamma (o`rnatilgan rol)' } },
{ keyValue: 'Admin', execParams: { description: 'Administrator (o`rnatilgan rol)' } },
{ keyValue: 'Anonymous', execParams: { description: 'Ruxsatsiz foydalanuvchi (o`rnatilgan rol)' } },
{ keyValue: 'User', execParams: { description: 'Vakolatli foydalanuvchi (o`rnatilgan rol)' } },
{ keyValue: 'Supervisor', execParams: { description: 'Xavfsizlik ma`muri (o`rnatilgan rol)' } },
{ keyValue: 'Developer', execParams: { description: 'Ishlab chiquvchi (o`rnatilgan rol)' } },
{ keyValue: 'Monitor', execParams: { description: 'Monitoring (o`rnatilgan rol)' } }
]
})
}
code;entityMask;methodMask;ruleType;ruleRole;description
UBA_USER_LANGCH_EVERYONE;uba_user;changeLanguage;A;User;Allow change language for Everyone
UBA_USER_UDATACH_USERS;uba_user;setUDataKey;A;User;Allow set uData key for user
UBA_USER_READ_USERS;uba_user;select;A;User;Allow read users for registered user
UBA_USER_READ_GROUPS;uba_group;select;A;User;Allow read groups for registered user
UBA_USER_EDIT_SUPERVISOR;uba_user;[iuda]*;A;Supervisor;Allow CUD operations on users for supervisor
UBA_USER_CHPWD_SUPERVISOR;uba_user;changeOtherUserPassword;A;Supervisor;Allow change password for any user for supervisor
UBA_GROUP_EDIT_SUPERVISOR;uba_group;[iuda]*;A;Supervisor;Allow CUD operations on security groups for supervisor
UBA_ROLE_READ_SUPERVISOR;uba_role;select;A;Supervisor;Allow supervisor to read roles
UBA_USER_ROLE_EDIT_SUPERVISOR;uba_userrole;[iuda]*;A;Supervisor;Allow grant a role to user for supervisor
UBA_USER_GROUP_EDIT_SUPERVISOR;uba_usergroup;[iuda]*;A;Supervisor;Allow grant a group to user for supervisor
UBA_GROUPROLE_EDIT_SUPERVISOR;uba_grouprole;[iuda]*;A;Supervisor;Allow grant a role to group for supervisor
UBA_GROUPROLE_READ_SUPERVISOR;uba_grouprole;select;A;Supervisor;Allow supervisor to read groups roles
UBA_USERROLE_READ_SUPERVISOR;uba_userrole;select;A;Supervisor;Allow supervisor to read user roles
UBA_USERGROUP_READ_SUPERVISOR;uba_usergroup;select;A;Supervisor;Allow supervisor to read user groups
UBA_AUDIT_READ_SUPERVISOR;uba_audit;select;A;Supervisor;Allow supervisor to read security audit
UBA_AUDITTRAIL_READ_SUPERVISOR;uba_auditTrail;select;A;Supervisor;Allow supervisor to read audit trail
UBA_AUDIT_SELECT_ONLY;uba_audit;[^s]*;D;Everyone;Deny direct security audit operation even for all roles
UBA_AUDIT_SECURE_EVENT;uba_audit;secureBrowserEvent;A;User;Allow insert secureBrowserEvent for authorized user
UBA_SUBJECT_DENY;uba_subject;[iuda]*;D;Everyone;Deny direct modification of UNITY uba_subject
UBA_AUDITTRAIL_SEL_ONLY;uba_auditTrail;[iuda]*;D;Everyone;Deny direct audit operation even for all roles
UBA_ADVSEC_EDIT_SUPERVISOR;uba_advSecurity;[iuda]*;A;Supervisor;Allow CUD operations on advanced security for supervisor
UBA_USERCERT_READ;uba_usercertificate;select;A;User;Allow read user certificates for registered users
UBA_USERCERT_READ_CERT_BIN;uba_usercertificate;getCertificate;A;User;Allow read base64 representation of cert for registered users
\ No newline at end of file
/**
* @author pavel.mash
* Add permission for uba_user.changeLanguage for Everyone role
*/
/**
* @param {ServerSession} session
*/
module.exports = function (session) {
var conn = session.connection
conn.insert({
entity: 'uba_els',
execParams: {
code: 'UBA_USER_LANGCH_EVERYONE',
description: 'Allow change language for Everyone',
entityMask: 'uba_user',
methodMask: 'changeLanguage',
ruleType: 'A',
ruleRole: 0
}
})
}
/**
* @author pavel.mash
* Fill navigation shortcuts for UBA model
*/
/**
* Initial script for create UnityBase Administration desktop navigation shortcuts for UBA model
* Used by `ubcli initialize` command
* @param {ServerSession} session
*/
module.exports = function (session) {
var desktopID, folderID, conn = session.connection
desktopID = conn.lookup('ubm_desktop', 'ID', {
expression: 'code',
condition: 'equal',
values: {code: 'adm_desktop'}
})
if (!desktopID) {
throw new Error('adm_desktop not found')
}
folderID = conn.lookup('ubm_navshortcut', 'ID', {
expression: 'code',
condition: 'equal',
values: {code: 'adm_folder_security'}
})
console.log('\t\t\tcreate `Security monitor')
conn.insert({
fieldList: ['ID'], entity: 'ubm_navshortcut', execParams: {
desktopID: desktopID,
parentID: folderID,
code: 'uba_audit-securityDashboard',
caption: 'Security dashboard',
displayOrder: 70,
iconCls: 'fa fa-user-secret ',
cmdCode: JSON.stringify({
cmdType: 'showForm',
formCode: 'uba_audit-securityDashboard'
}, null, '\t')
}
})
}
/**
* @author pavel.mash
* Create roles users / powerUsers / supervisors
*/
/**
* Initial script for create UnityBase Administration desktop navigation shortcuts for UBA model
* Used by ubcli initialize command
* @param {ServerSession} session
*/
module.exports = function (session) {
var conn = session.connection
var csvLoader = require('@unitybase/base').dataLoader
console.info('\tNew ELS for UBA model')
csvLoader.loadSimpleCSVData(conn, __dirname + '/new_els.csv', 'uba_els', 'code;entityMask;methodMask;ruleType;ruleRole;description'.split(';'), [
0, 1, 2, 3,
function (row) {
if (typeof row[4] === 'number') {
return row[4]
} else {
return conn.lookup('uba_role', 'ID', {expression: 'name', condition: 'equal', values: {name: row[4]}})
}
},
5], 1)
}
/**
* Fill UBS model settings
* Used by `ubcli initialize` command
* @param {ServerSession} session
*/
module.exports = function (session) {
'use strict'
var
csvLoader = require('@unitybase/base').dataLoader,
conn = session.connection
console.info('\tFill default settings for UBS model')
csvLoader.loadSimpleCSVData(conn, __dirname + '/ubs_settings-UBA.csv', 'ubs_settings', 'settingKey;type;defaultValue;settingValue;name;description'.split(';'), [0, 1, 2, 3, 4, 5], 1)
}
/**
* @author pavel.mash
* Add ELS for uba_usercertificates
*/
const cmdLineOpt = require('@unitybase/base/options')
const argv = require('@unitybase/base/argv')
const csvLoader = require('@unitybase/base').dataLoader
/*
* Used by ubcli initialize command
* @param {ServerSession} session
*/
module.exports = function (session) {
if (!session) {
let opts = cmdLineOpt.describe('', 'Execute migration script')
.add(argv.establishConnectionFromCmdLineAttributes._cmdLineParams)
let options = opts.parseVerbose({}, true)
if (!options) return
session = argv.establishConnectionFromCmdLineAttributes(options)
}
let conn = session.connection
console.info('\tNew ELS for UBA model')
csvLoader.loadSimpleCSVData(conn, __dirname + '/uba_usercert_els.csv', 'uba_els', 'code;entityMask;methodMask;ruleType;ruleRole;description'.split(';'), [
0, 1, 2, 3,
function (row) {
if (typeof row[4] === 'number') {
return row[4]
} else {
return conn.lookup('uba_role', 'ID', {expression: 'name', condition: 'equal', values: {name: row[4]}})
}
},
5], 1)
}
code;entityMask;methodMask;ruleType;ruleRole;description
UBA_GROUP_EDIT_SUPERVISOR;uba_group;[iuda]*;A;Supervisor;Allow CUD operations on security groups for supervisor
UBA_USER_GROUP_EDIT_SUPERVISOR;uba_usergroup;[iuda]*;A;Supervisor;Allow grant agroup to user for supervisor
\ No newline at end of file
code;entityMask;methodMask;ruleType;ruleRole;description
UBA_USERCERT_READ;uba_usercertificate;select;A;User;Allow read user certificates for registered users
UBA_USERCERT_READ_CERT_BIN;uba_usercertificate;getCertificate;A;User;Allow read base64 representation of cert for registered users
\ No newline at end of file
settingKey;type;defaultValue;settingValue;name;description
uba.user.publicRegistrationSubject;string;"";"";Subject of email, sent to new user on public registration;Subject of email, sent to new user on public registration
uba.user.publicRegistrationReportCode;string;"";"";Report code for generating email, sent to new user on public registration;Report code for generating email, sent to new user on public registration
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment