@beinformed/ui 1.27.1 → 1.27.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/esm/constants/Constants.js +5 -0
- package/esm/constants/Constants.js.map +1 -1
- package/esm/constants/Settings.js +6 -4
- package/esm/constants/Settings.js.map +1 -1
- package/esm/models/application/ApplicationModel.js +6 -3
- package/esm/models/application/ApplicationModel.js.map +1 -1
- package/esm/models/attributes/AttributeDataHelper.js +2 -2
- package/esm/models/attributes/AttributeDataHelper.js.map +1 -1
- package/esm/models/attributes/_createAttribute.js +2 -2
- package/esm/models/attributes/_createAttribute.js.map +1 -1
- package/esm/models/base/BaseCollection.js +3 -9
- package/esm/models/base/BaseCollection.js.map +1 -1
- package/esm/models/base/BaseModel.js +2 -8
- package/esm/models/base/BaseModel.js.map +1 -1
- package/esm/modularui/Authenticate.js +25 -13
- package/esm/modularui/Authenticate.js.map +1 -1
- package/esm/react/ErrorBoundaryFallback.js +3 -0
- package/esm/react/ErrorBoundaryFallback.js.map +1 -1
- package/esm/react-server/serverUtil.js +1 -0
- package/esm/react-server/serverUtil.js.map +1 -1
- package/esm/redux/actions/FormValidations.js +1 -1
- package/esm/redux/actions/FormValidations.js.map +1 -1
- package/lib/constants/Constants.js +7 -1
- package/lib/constants/Constants.js.flow +5 -0
- package/lib/constants/Constants.js.map +1 -1
- package/lib/constants/Settings.js +5 -3
- package/lib/constants/Settings.js.flow +7 -3
- package/lib/constants/Settings.js.map +1 -1
- package/lib/models/application/ApplicationModel.js +6 -3
- package/lib/models/application/ApplicationModel.js.flow +10 -5
- package/lib/models/application/ApplicationModel.js.map +1 -1
- package/lib/models/attributes/AttributeDataHelper.js +2 -2
- package/lib/models/attributes/AttributeDataHelper.js.flow +2 -2
- package/lib/models/attributes/AttributeDataHelper.js.map +1 -1
- package/lib/models/attributes/__tests__/ChoiceAttributeModel.spec.js.flow +3 -0
- package/lib/models/attributes/__tests__/CompositeAttributeModel.spec.js.flow +3 -0
- package/lib/models/attributes/_createAttribute.js +2 -2
- package/lib/models/attributes/_createAttribute.js.flow +2 -2
- package/lib/models/attributes/_createAttribute.js.map +1 -1
- package/lib/models/base/BaseCollection.js +3 -9
- package/lib/models/base/BaseCollection.js.flow +4 -10
- package/lib/models/base/BaseCollection.js.map +1 -1
- package/lib/models/base/BaseModel.js +2 -8
- package/lib/models/base/BaseModel.js.flow +3 -9
- package/lib/models/base/BaseModel.js.map +1 -1
- package/lib/models/base/__tests__/BaseModel.spec.js.flow +3 -7
- package/lib/modularui/Authenticate.js +24 -12
- package/lib/modularui/Authenticate.js.flow +30 -13
- package/lib/modularui/Authenticate.js.map +1 -1
- package/lib/react/ErrorBoundaryFallback.js +3 -0
- package/lib/react/ErrorBoundaryFallback.js.flow +2 -0
- package/lib/react/ErrorBoundaryFallback.js.map +1 -1
- package/lib/react-server/serverUtil.js +1 -0
- package/lib/react-server/serverUtil.js.flow +2 -0
- package/lib/react-server/serverUtil.js.map +1 -1
- package/lib/redux/actions/FormValidations.js +1 -1
- package/lib/redux/actions/FormValidations.js.flow +1 -1
- package/lib/redux/actions/FormValidations.js.map +1 -1
- package/package.json +11 -10
- package/src/constants/Constants.js +5 -0
- package/src/constants/Settings.js +7 -3
- package/src/models/application/ApplicationModel.js +10 -5
- package/src/models/attributes/AttributeDataHelper.js +2 -2
- package/src/models/attributes/__tests__/ChoiceAttributeModel.spec.js +3 -0
- package/src/models/attributes/__tests__/CompositeAttributeModel.spec.js +3 -0
- package/src/models/attributes/_createAttribute.js +2 -2
- package/src/models/base/BaseCollection.js +4 -10
- package/src/models/base/BaseModel.js +3 -9
- package/src/models/base/__tests__/BaseModel.spec.js +3 -7
- package/src/modularui/Authenticate.js +30 -13
- package/src/react/ErrorBoundaryFallback.js +2 -0
- package/src/react-server/serverUtil.js +2 -0
- package/src/redux/actions/FormValidations.js +1 -1
- package/types/constants/Constants.d.ts +5 -0
- package/types/models/base/BaseCollection.d.ts +2 -2
- package/types/models/base/BaseModel.d.ts +1 -1
- package/types/modularui/Authenticate.d.ts +8 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [1.27.3](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.27.2...v1.27.3) (2023-02-06)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- **authenticate:** set default login path to pac4j ([6f14e68](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/6f14e68843f5dbe53ed4850eed7cd49fc9631a46))
|
|
10
|
+
- **authentication:** return default authentication type when security property not present ([2c5d05b](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/2c5d05b3c80b7de3732eb3c6773972817d6c4b13))
|
|
11
|
+
- **init:** set connectKey on application model on initialization ([4eb88d5](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/4eb88d5f9c639296ae2ed2a024a080d1d03ac0d9))
|
|
12
|
+
|
|
13
|
+
### [1.27.2](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.27.1...v1.27.2) (2023-01-31)
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
- **clone:** use klona for complete and fast deep clone of models and data ([2e4509a](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/2e4509a0cefa3d2deadb7485c6b8a12bdbdb7886))
|
|
18
|
+
|
|
5
19
|
### [1.27.1](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.27.0...v1.27.1) (2023-01-24)
|
|
6
20
|
|
|
7
21
|
### Bug Fixes
|
|
@@ -150,6 +150,11 @@ export const ATTRIBUTE_WIDTH = {
|
|
|
150
150
|
EXTRA_LARGE: "EXTRA_LARGE"
|
|
151
151
|
};
|
|
152
152
|
export const ALL_CONTENT_IN_DATA_SETTING = "hasAllContentInData";
|
|
153
|
+
export const INTERNAL_LOGIN_TYPE = {
|
|
154
|
+
JAAS: "JAAS",
|
|
155
|
+
PAC4J_FORM: "PAC4J_FORM",
|
|
156
|
+
PAC4J_BASIC: "PAC4J_BASIC"
|
|
157
|
+
};
|
|
153
158
|
export const LOGIN_TYPE = "security.clients";
|
|
154
159
|
export const LOGIN_PATH_SETTING = "FormClient.login_url";
|
|
155
160
|
export const LOGIN_USERNAME_SETTING = "FormClient.username_field_name";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Constants.js","names":["CONTENT_PATH","UPLOAD_PATH","CAPTCHA_PATH","CHANGEPASSWORD_PATH","USERPROFILE_PATH","RESOURCE_PATH","PARAMETER_SEPARATOR","TIMEVERSION_FILTER_NAME","PARAMETER_OVERVIEW_VIEWTYPE","DEFAULT_UI_PARAMETERS","ISO_DATE_FORMAT","ISO_DATETIME_FORMAT","ISO_TIME_FORMAT","ISO_TIMESTAMP_FORMAT","DEFAULT_WEEK_STARTS_ON","DEFAULT_FIRST_WEEK_CONTAINS_DATE","KEYCODES","TAB","ENTER","ESCAPE","SPACE","PAGE_UP","PAGE_DOWN","ARROW_LEFT","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","IS_SYNC","dataFetcher","IS_SERVER","NOTIFICATION_TYPES","SUCCESS","INFO","WARNING","ERROR","HTTP_METHODS","GET","POST","MODULARUI_STATUS","LOADING","FINISHED","AUTOSAVE_STATUS","START","INPUT_DEBOUNCE_TIMEOUT","VALIDATE_DEBOUNCE_TIMEOUT","ATTRIBUTE_WIDTH","EXTRA_SMALL","SMALL","MEDIUM","LARGE","EXTRA_LARGE","ALL_CONTENT_IN_DATA_SETTING","LOGIN_TYPE","LOGIN_PATH_SETTING","LOGIN_USERNAME_SETTING","LOGIN_PASSWORD_SETTING","LOGOUT_PATH_SETTING","DEFAULT_AUTHENTICATION_TYPE","name","authentication","isPrimary"],"sources":["../../src/constants/Constants.js"],"sourcesContent":["// @flow\n/**\n * path to content service\n */\nexport const CONTENT_PATH = `/content`;\n\n/**\n * Upload Path\n */\nexport const UPLOAD_PATH = `/uploadFile`;\n\n/**\n * Captcha Path\n */\nexport const CAPTCHA_PATH = `/captchaServices`;\n\n/**\n * Path to change password page / component\n */\nexport const CHANGEPASSWORD_PATH = \"/change-password\";\n\n/**\n * Path to user profile page / component\n */\nexport const USERPROFILE_PATH = \"/user\";\n\n/**\n * Path to resources in the Be Informed repository\n */\nexport const RESOURCE_PATH = \"/resource\";\n\n/**\n * Separator for parameters of a list, makes it possible to render multiple lists on a page in a non-js environment\n */\nexport const PARAMETER_SEPARATOR = \"~\";\n\n/**\n * Timeversion filter name\n */\nexport const TIMEVERSION_FILTER_NAME = \"entryDate\";\n\nconst PARAMETER_OVERVIEW_VIEWTYPE = \"viewType\";\n/**\n * Parameter name for the viewtype toggle\n */\nexport const DEFAULT_UI_PARAMETERS: Array<string> = [\n PARAMETER_OVERVIEW_VIEWTYPE,\n];\n\n/**\n */\nexport const ISO_DATE_FORMAT = \"yyyy-MM-dd\";\n/**\n */\nexport const ISO_DATETIME_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss\";\n/**\n */\nexport const ISO_TIME_FORMAT = \"HH:mm:ss\";\n/**\n */\nexport const ISO_TIMESTAMP_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss.SSS\";\n/**\n * week starts on monday by default\n */\nexport const DEFAULT_WEEK_STARTS_ON = 1;\n\n/**\n * first week indicated by the 1st of january\n */\nexport const DEFAULT_FIRST_WEEK_CONTAINS_DATE = 1;\n\n/**\n * Key codes\n * @type {{SPACE: number, PAGE_DOWN: number, TAB: number, ARROW_RIGHT: number, ARROW_DOWN: number, ENTER: number, ARROW_UP: number, ARROW_LEFT: number, PAGE_UP: number, ESCAPE: number}}\n */\nexport const KEYCODES = {\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n ARROW_LEFT: 37,\n ARROW_UP: 38,\n ARROW_RIGHT: 39,\n ARROW_DOWN: 40,\n};\n\n/**\n * @type {boolean}\n */\nexport const IS_SYNC = typeof dataFetcher !== \"undefined\";\n/**\n * @type {boolean}\n */\nexport const IS_SERVER = IS_SYNC;\n\n/**\n * @type {{SUCCESS: string, ERROR: string, INFO: string, WARNING: string}}\n */\nexport const NOTIFICATION_TYPES = {\n SUCCESS: \"SUCCESS\",\n INFO: \"INFO\",\n WARNING: \"WARNING\",\n ERROR: \"ERROR\",\n};\n\n/**\n * SUPPORTED HTTP METHODS\n * @type {{POST: string, GET: string}}\n */\nexport const HTTP_METHODS = {\n GET: \"GET\",\n POST: \"POST\",\n};\n\n/**\n * POSSIBLE MODULARUI STATUSSES\n * @type {{LOADING: string, ERROR: string, FINISHED: string}}\n */\nexport const MODULARUI_STATUS = {\n LOADING: \"LOADING\",\n FINISHED: \"FINISHED\",\n ERROR: \"ERROR\",\n};\n\n/**\n * POSSIBLE AUTOSAVE STATUSSES\n * @type {{START: string, FINISHED: string}}\n */\nexport const AUTOSAVE_STATUS = {\n START: \"START\",\n FINISHED: \"FINISHED\",\n};\n\n/**\n * DEBOUNCE INPUT TIMEOUT\n */\nexport const INPUT_DEBOUNCE_TIMEOUT = 100;\n\n/**\n * DEBOUNCE VALIDATION TIMEOUT\n */\nexport const VALIDATE_DEBOUNCE_TIMEOUT = 500;\n\n/**\n * ATTRIBUTE WIDTH\n */\nexport const ATTRIBUTE_WIDTH = {\n EXTRA_SMALL: \"EXTRA_SMALL\",\n SMALL: \"SMALL\",\n MEDIUM: \"MEDIUM\",\n LARGE: \"LARGE\",\n EXTRA_LARGE: \"EXTRA_LARGE\",\n};\n\nexport const ALL_CONTENT_IN_DATA_SETTING = \"hasAllContentInData\";\n\nexport const LOGIN_TYPE = \"security.clients\";\nexport const LOGIN_PATH_SETTING = \"FormClient.login_url\";\nexport const LOGIN_USERNAME_SETTING = \"FormClient.username_field_name\";\nexport const LOGIN_PASSWORD_SETTING = \"FormClient.password_field_name\";\nexport const LOGOUT_PATH_SETTING = \"FormClient.logout_url\";\n\nexport const DEFAULT_AUTHENTICATION_TYPE = {\n name: \"Form based authentication\",\n authentication: \"DefaultFormClient\",\n isPrimary: true,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Constants.js","names":["CONTENT_PATH","UPLOAD_PATH","CAPTCHA_PATH","CHANGEPASSWORD_PATH","USERPROFILE_PATH","RESOURCE_PATH","PARAMETER_SEPARATOR","TIMEVERSION_FILTER_NAME","PARAMETER_OVERVIEW_VIEWTYPE","DEFAULT_UI_PARAMETERS","ISO_DATE_FORMAT","ISO_DATETIME_FORMAT","ISO_TIME_FORMAT","ISO_TIMESTAMP_FORMAT","DEFAULT_WEEK_STARTS_ON","DEFAULT_FIRST_WEEK_CONTAINS_DATE","KEYCODES","TAB","ENTER","ESCAPE","SPACE","PAGE_UP","PAGE_DOWN","ARROW_LEFT","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","IS_SYNC","dataFetcher","IS_SERVER","NOTIFICATION_TYPES","SUCCESS","INFO","WARNING","ERROR","HTTP_METHODS","GET","POST","MODULARUI_STATUS","LOADING","FINISHED","AUTOSAVE_STATUS","START","INPUT_DEBOUNCE_TIMEOUT","VALIDATE_DEBOUNCE_TIMEOUT","ATTRIBUTE_WIDTH","EXTRA_SMALL","SMALL","MEDIUM","LARGE","EXTRA_LARGE","ALL_CONTENT_IN_DATA_SETTING","INTERNAL_LOGIN_TYPE","JAAS","PAC4J_FORM","PAC4J_BASIC","LOGIN_TYPE","LOGIN_PATH_SETTING","LOGIN_USERNAME_SETTING","LOGIN_PASSWORD_SETTING","LOGOUT_PATH_SETTING","DEFAULT_AUTHENTICATION_TYPE","name","authentication","isPrimary"],"sources":["../../src/constants/Constants.js"],"sourcesContent":["// @flow\n/**\n * path to content service\n */\nexport const CONTENT_PATH = `/content`;\n\n/**\n * Upload Path\n */\nexport const UPLOAD_PATH = `/uploadFile`;\n\n/**\n * Captcha Path\n */\nexport const CAPTCHA_PATH = `/captchaServices`;\n\n/**\n * Path to change password page / component\n */\nexport const CHANGEPASSWORD_PATH = \"/change-password\";\n\n/**\n * Path to user profile page / component\n */\nexport const USERPROFILE_PATH = \"/user\";\n\n/**\n * Path to resources in the Be Informed repository\n */\nexport const RESOURCE_PATH = \"/resource\";\n\n/**\n * Separator for parameters of a list, makes it possible to render multiple lists on a page in a non-js environment\n */\nexport const PARAMETER_SEPARATOR = \"~\";\n\n/**\n * Timeversion filter name\n */\nexport const TIMEVERSION_FILTER_NAME = \"entryDate\";\n\nconst PARAMETER_OVERVIEW_VIEWTYPE = \"viewType\";\n/**\n * Parameter name for the viewtype toggle\n */\nexport const DEFAULT_UI_PARAMETERS: Array<string> = [\n PARAMETER_OVERVIEW_VIEWTYPE,\n];\n\n/**\n */\nexport const ISO_DATE_FORMAT = \"yyyy-MM-dd\";\n/**\n */\nexport const ISO_DATETIME_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss\";\n/**\n */\nexport const ISO_TIME_FORMAT = \"HH:mm:ss\";\n/**\n */\nexport const ISO_TIMESTAMP_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss.SSS\";\n/**\n * week starts on monday by default\n */\nexport const DEFAULT_WEEK_STARTS_ON = 1;\n\n/**\n * first week indicated by the 1st of january\n */\nexport const DEFAULT_FIRST_WEEK_CONTAINS_DATE = 1;\n\n/**\n * Key codes\n * @type {{SPACE: number, PAGE_DOWN: number, TAB: number, ARROW_RIGHT: number, ARROW_DOWN: number, ENTER: number, ARROW_UP: number, ARROW_LEFT: number, PAGE_UP: number, ESCAPE: number}}\n */\nexport const KEYCODES = {\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n ARROW_LEFT: 37,\n ARROW_UP: 38,\n ARROW_RIGHT: 39,\n ARROW_DOWN: 40,\n};\n\n/**\n * @type {boolean}\n */\nexport const IS_SYNC = typeof dataFetcher !== \"undefined\";\n/**\n * @type {boolean}\n */\nexport const IS_SERVER = IS_SYNC;\n\n/**\n * @type {{SUCCESS: string, ERROR: string, INFO: string, WARNING: string}}\n */\nexport const NOTIFICATION_TYPES = {\n SUCCESS: \"SUCCESS\",\n INFO: \"INFO\",\n WARNING: \"WARNING\",\n ERROR: \"ERROR\",\n};\n\n/**\n * SUPPORTED HTTP METHODS\n * @type {{POST: string, GET: string}}\n */\nexport const HTTP_METHODS = {\n GET: \"GET\",\n POST: \"POST\",\n};\n\n/**\n * POSSIBLE MODULARUI STATUSSES\n * @type {{LOADING: string, ERROR: string, FINISHED: string}}\n */\nexport const MODULARUI_STATUS = {\n LOADING: \"LOADING\",\n FINISHED: \"FINISHED\",\n ERROR: \"ERROR\",\n};\n\n/**\n * POSSIBLE AUTOSAVE STATUSSES\n * @type {{START: string, FINISHED: string}}\n */\nexport const AUTOSAVE_STATUS = {\n START: \"START\",\n FINISHED: \"FINISHED\",\n};\n\n/**\n * DEBOUNCE INPUT TIMEOUT\n */\nexport const INPUT_DEBOUNCE_TIMEOUT = 100;\n\n/**\n * DEBOUNCE VALIDATION TIMEOUT\n */\nexport const VALIDATE_DEBOUNCE_TIMEOUT = 500;\n\n/**\n * ATTRIBUTE WIDTH\n */\nexport const ATTRIBUTE_WIDTH = {\n EXTRA_SMALL: \"EXTRA_SMALL\",\n SMALL: \"SMALL\",\n MEDIUM: \"MEDIUM\",\n LARGE: \"LARGE\",\n EXTRA_LARGE: \"EXTRA_LARGE\",\n};\n\nexport const ALL_CONTENT_IN_DATA_SETTING = \"hasAllContentInData\";\n\nexport const INTERNAL_LOGIN_TYPE = {\n JAAS: \"JAAS\",\n PAC4J_FORM: \"PAC4J_FORM\",\n PAC4J_BASIC: \"PAC4J_BASIC\",\n};\nexport const LOGIN_TYPE = \"security.clients\";\nexport const LOGIN_PATH_SETTING = \"FormClient.login_url\";\nexport const LOGIN_USERNAME_SETTING = \"FormClient.username_field_name\";\nexport const LOGIN_PASSWORD_SETTING = \"FormClient.password_field_name\";\nexport const LOGOUT_PATH_SETTING = \"FormClient.logout_url\";\n\nexport const DEFAULT_AUTHENTICATION_TYPE = {\n name: \"Form based authentication\",\n authentication: \"DefaultFormClient\",\n isPrimary: true,\n};\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import _Object$assign from "@babel/runtime-corejs3/core-js-stable/object/assign"
|
|
|
2
2
|
import _startsWithInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/starts-with";
|
|
3
3
|
import { isPlainObject, has } from "../utils/helpers/objects";
|
|
4
4
|
import { getRepositoryResourceUrl } from "../utils/helpers/repositoryResource";
|
|
5
|
-
import { ALL_CONTENT_IN_DATA_SETTING, LOGIN_TYPE, LOGIN_PATH_SETTING, LOGIN_USERNAME_SETTING, LOGIN_PASSWORD_SETTING, LOGOUT_PATH_SETTING, UPLOAD_PATH, CAPTCHA_PATH } from "./Constants";
|
|
5
|
+
import { ALL_CONTENT_IN_DATA_SETTING, INTERNAL_LOGIN_TYPE, LOGIN_TYPE, LOGIN_PATH_SETTING, LOGIN_USERNAME_SETTING, LOGIN_PASSWORD_SETTING, LOGOUT_PATH_SETTING, UPLOAD_PATH, CAPTCHA_PATH } from "./Constants";
|
|
6
6
|
const serverBase = typeof __CONTEXT_PATH__ === "undefined" ? null : __CONTEXT_PATH__;
|
|
7
7
|
const defaultSettings = {
|
|
8
8
|
// This uses contextPath set from property from server
|
|
@@ -126,12 +126,14 @@ export const hasAllContentInData = () => getSetting(ALL_CONTENT_IN_DATA_SETTING,
|
|
|
126
126
|
|
|
127
127
|
/**
|
|
128
128
|
* Login type, only available when pac4j is configured
|
|
129
|
+
*
|
|
130
|
+
* Preview does not support pac4j, thus is probably not configured when started, which results in login type JAAS
|
|
129
131
|
*/
|
|
130
|
-
export const loginType = () => getSetting(LOGIN_TYPE,
|
|
132
|
+
export const loginType = () => getSetting(LOGIN_TYPE, INTERNAL_LOGIN_TYPE.JAAS);
|
|
131
133
|
|
|
132
134
|
/**
|
|
133
135
|
*/
|
|
134
|
-
export const loginPath = () => getSetting(LOGIN_PATH_SETTING, "/
|
|
136
|
+
export const loginPath = () => getSetting(LOGIN_PATH_SETTING, "/callback?client_name=FormClient");
|
|
135
137
|
/**
|
|
136
138
|
*/
|
|
137
139
|
export const loginUsernameField = () => getSetting(LOGIN_USERNAME_SETTING, "j_username");
|
|
@@ -140,7 +142,7 @@ export const loginUsernameField = () => getSetting(LOGIN_USERNAME_SETTING, "j_us
|
|
|
140
142
|
export const loginPasswordField = () => getSetting(LOGIN_PASSWORD_SETTING, "j_password");
|
|
141
143
|
/**
|
|
142
144
|
*/
|
|
143
|
-
export const logoutPath = () => getSetting(LOGOUT_PATH_SETTING, "/
|
|
145
|
+
export const logoutPath = () => getSetting(LOGOUT_PATH_SETTING, "/logout");
|
|
144
146
|
export const LOGIN_PATH = loginPath();
|
|
145
147
|
export const LOGOUT_PATH = logoutPath();
|
|
146
148
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Settings.js","names":["isPlainObject","has","getRepositoryResourceUrl","ALL_CONTENT_IN_DATA_SETTING","LOGIN_TYPE","LOGIN_PATH_SETTING","LOGIN_USERNAME_SETTING","LOGIN_PASSWORD_SETTING","LOGOUT_PATH_SETTING","UPLOAD_PATH","CAPTCHA_PATH","serverBase","__CONTEXT_PATH__","defaultSettings","CONTEXT_PATH","window","contextPath","CACHE_CONTRIBUTIONS","DEBUG_I18N_MESSAGE_NOT_FOUND","HIDE_NOTIFICATION_TIMEOUT","ALWAYS_COMMIT_FORM","RENDER_QUESTION_LABELS","RENDER_MANDATORY_ATTRIBUTE_INDICATION","RENDER_OPTIONAL_ATTRIBUTE_INDICATION","AVAILABLE_LIST_VIEWS","USE_CLIENTSIDE_VALIDATION","USE_INSTANT_SERVER_VALIDATION","ENABLED_LOCALES","RENDER_GLOBAL_LOGIN_PAGE","RENDER_GLOBAL_LOGOUT_PAGE","RENDER_MULTI_LOGIN_ON_GLOBAL_LOGOUT_PAGE","LOGIN_PATH","ADMINISTRATOR_LOGIN_PATH","LOGOUT_PATH","RENDER_FORMS_IN_MODAL","SHOW_SUBMIT_WAIT_TIMEOUT","SWIM_LANE_DIAGRAM_CONFIGURATION","BUSINESS_SCENARIO_CONCEPT_TYPE","BUSINESS_SCENARIO_STEP_CONCEPT_TYPE","BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE","DATE_INPUT_FORMAT","DATE_READONLY_FORMAT","CALENDAR_WEEK_STARTS_ON","CALENDAR_FIRST_WEEK_CONTAINS_DATE","UI_PARAMETERS","ALLOW_HIDE_WHEN_EMPTY_ON_TABS","PAGE_RELOAD_ON_UNAUTHORIZED_ERROR","XHR_TIMEOUT_MS","HIDE_WHEN_EMPTY_IGNORE_TASKS","settings","setSettings","config","getSetting","key","defaultValue","undefined","Error","setSetting","value","allSettings","cacheContributions","getBasePath","getUploadPath","getCaptchaPath","hasAllContentInData","loginType","loginPath","loginUsernameField","loginPasswordField","logoutPath","getSwimLaneDiagramConfiguration","configLocation","BASE"],"sources":["../../src/constants/Settings.js"],"sourcesContent":["// @flow\nimport { isPlainObject, has } from \"../utils/helpers/objects\";\nimport { getRepositoryResourceUrl } from \"../utils/helpers/repositoryResource\";\nimport {\n ALL_CONTENT_IN_DATA_SETTING,\n LOGIN_TYPE,\n LOGIN_PATH_SETTING,\n LOGIN_USERNAME_SETTING,\n LOGIN_PASSWORD_SETTING,\n LOGOUT_PATH_SETTING,\n UPLOAD_PATH,\n CAPTCHA_PATH,\n} from \"./Constants\";\n\ntype Setting = boolean | string | number | Array<string>;\n\nconst serverBase =\n typeof __CONTEXT_PATH__ === \"undefined\" ? null : __CONTEXT_PATH__;\n\nconst defaultSettings: { [name: string]: Setting } = {\n // This uses contextPath set from property from server\n CONTEXT_PATH:\n serverBase ??\n (typeof window !== \"undefined\" && window.contextPath\n ? window.contextPath\n : \"/BeInformed\"),\n\n // Indicates if contributions should be cached\n CACHE_CONTRIBUTIONS: true,\n\n // Debug missing i18n messages in layout\n DEBUG_I18N_MESSAGE_NOT_FOUND: true,\n\n // Time to show the notification bar\n HIDE_NOTIFICATION_TIMEOUT: 5000,\n\n // Always commit form, does not show result pages for instruments\n ALWAYS_COMMIT_FORM: false,\n\n // Render instrument and event question labels on forms (might result in duplicate labels)\n RENDER_QUESTION_LABELS: true,\n\n // Render mandatory indications on attributes\n RENDER_MANDATORY_ATTRIBUTE_INDICATION: true,\n\n // Render optional indications on attributes\n RENDER_OPTIONAL_ATTRIBUTE_INDICATION: false,\n\n // Renders a toggle with supported list views, options are ListView and TableView\n AVAILABLE_LIST_VIEWS: [\"ListView\", \"TableView\"],\n\n // Toggle client side validation\n USE_CLIENTSIDE_VALIDATION: true,\n\n // Indicates if server validation should be used when a form field is changed\n USE_INSTANT_SERVER_VALIDATION: true,\n\n // Indicates which locales are enabled\n ENABLED_LOCALES: [\"en\", \"nl\"],\n\n // Renders the global log in page\n RENDER_GLOBAL_LOGIN_PAGE: false,\n\n // Renders the global log out page\n RENDER_GLOBAL_LOGOUT_PAGE: false,\n\n // Renders the login variants as option on the global logout page\n RENDER_MULTI_LOGIN_ON_GLOBAL_LOGOUT_PAGE: false,\n\n // Path to login page / component\n LOGIN_PATH: \"/signin\",\n\n // Path to administrator login page / component\n ADMINISTRATOR_LOGIN_PATH: \"\",\n\n // Path to logout page / component\n LOGOUT_PATH: \"/signout\",\n\n // Render forms in a modal\n RENDER_FORMS_IN_MODAL: true,\n\n // Wait timeout before rendering submit wait icon\n SHOW_SUBMIT_WAIT_TIMEOUT: 300,\n\n // Swim lane diagram configuration file\n SWIM_LANE_DIAGRAM_CONFIGURATION: \"/Library/Diagrams/Overviews.json\",\n\n // Business scenario concept types\n BUSINESS_SCENARIO_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/BusinessScenario\",\n ],\n BUSINESS_SCENARIO_STEP_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/ScenarioStep\",\n ],\n BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/Persona\",\n ],\n\n // Input format for dates. Without this setting having a value, the contributions format is used\n DATE_INPUT_FORMAT: \"\",\n\n // Readonly format for dates. Without this setting having a value, the contributions format is used\n DATE_READONLY_FORMAT: \"\",\n\n // indicates on what day the week starts (0 = Sunday)\n CALENDAR_WEEK_STARTS_ON: 1,\n\n // indicates which date indicates the first week of the year\n CALENDAR_FIRST_WEEK_CONTAINS_DATE: 1,\n\n // parameters that are added for the ui state, but should not be send to the modular ui\n UI_PARAMETERS: [],\n\n // disable hide-when-empty hint for layouts running on Be Informed versions older than 21.1\n ALLOW_HIDE_WHEN_EMPTY_ON_TABS: true,\n\n // reload the complete page on signout, usefull when third party authentication is in place\n PAGE_RELOAD_ON_UNAUTHORIZED_ERROR: false,\n\n XHR_TIMEOUT_MS: 300000,\n\n HIDE_WHEN_EMPTY_IGNORE_TASKS: false,\n};\n\nlet settings = defaultSettings;\n\n/**\n */\nexport const setSettings = (config: Object) => {\n if (isPlainObject(config)) {\n settings = Object.assign(defaultSettings, config);\n }\n};\n\n/**\n */\nexport const getSetting = (key: string, defaultValue?: any): any => {\n if (!has(settings, key) && defaultValue === undefined) {\n throw new Error(\n `Setting with name ${key} not found and no defaultValue given`\n );\n }\n\n return settings[key] ?? defaultValue;\n};\n\n/**\n */\nexport const setSetting = (key: string, value: any) => {\n settings[key] = value;\n};\n\n/**\n */\nexport const allSettings = (): { [name: string]: Setting } => settings;\n\n/**\n * Indicates if contributions must be cached\n */\nexport const cacheContributions = (): boolean =>\n getSetting(\"CACHE_CONTRIBUTIONS\", true);\n\n/**\n * Base path\n * This uses contextPath set from property from server\n * When requesting a remote server with CORS enabled, add the origin, for example:\n * export const BEINFORMED_PATH = 'http://192.168.128.61:8080/BeInformed';\n */\nexport const getBasePath = (): string =>\n getSetting(\"CONTEXT_PATH\", \"/BeInformed\");\n\n/**\n * Path to upload service\n */\nexport const getUploadPath = (): string => `${getBasePath()}${UPLOAD_PATH}`;\n\n/**\n * Path to captcha service\n */\nexport const getCaptchaPath = (): string => `${getBasePath()}${CAPTCHA_PATH}`;\n\n/**\n */\nexport const hasAllContentInData = (): boolean =>\n getSetting(ALL_CONTENT_IN_DATA_SETTING, true);\n\n/**\n * Login type, only available when pac4j is configured\n */\nexport const loginType = (): string => getSetting(LOGIN_TYPE, \"JAAS\");\n\n/**\n */\nexport const loginPath = (): string =>\n getSetting(LOGIN_PATH_SETTING, \"/j_security_check\");\n/**\n */\nexport const loginUsernameField = (): string =>\n getSetting(LOGIN_USERNAME_SETTING, \"j_username\");\n/**\n */\nexport const loginPasswordField = (): string =>\n getSetting(LOGIN_PASSWORD_SETTING, \"j_password\");\n/**\n */\nexport const logoutPath = (): string =>\n getSetting(LOGOUT_PATH_SETTING, \"/Logoff\");\n\nexport const LOGIN_PATH: string = loginPath();\nexport const LOGOUT_PATH: string = logoutPath();\n\n/**\n * Model overview swim lane configuration\n */\nexport const getSwimLaneDiagramConfiguration: Object = () => {\n let configLocation = getSetting(\n \"SWIM_LANE_DIAGRAM_CONFIGURATION\",\n \"/Library/Diagrams/Overviews.json\"\n );\n if (!configLocation.startsWith(\"/\")) {\n configLocation = `/${configLocation}`;\n }\n return getRepositoryResourceUrl(configLocation);\n};\n\n/**\n * Backwards compatible export of BASE constant\n */\nexport const BASE: string = getBasePath();\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Settings.js","names":["isPlainObject","has","getRepositoryResourceUrl","ALL_CONTENT_IN_DATA_SETTING","INTERNAL_LOGIN_TYPE","LOGIN_TYPE","LOGIN_PATH_SETTING","LOGIN_USERNAME_SETTING","LOGIN_PASSWORD_SETTING","LOGOUT_PATH_SETTING","UPLOAD_PATH","CAPTCHA_PATH","serverBase","__CONTEXT_PATH__","defaultSettings","CONTEXT_PATH","window","contextPath","CACHE_CONTRIBUTIONS","DEBUG_I18N_MESSAGE_NOT_FOUND","HIDE_NOTIFICATION_TIMEOUT","ALWAYS_COMMIT_FORM","RENDER_QUESTION_LABELS","RENDER_MANDATORY_ATTRIBUTE_INDICATION","RENDER_OPTIONAL_ATTRIBUTE_INDICATION","AVAILABLE_LIST_VIEWS","USE_CLIENTSIDE_VALIDATION","USE_INSTANT_SERVER_VALIDATION","ENABLED_LOCALES","RENDER_GLOBAL_LOGIN_PAGE","RENDER_GLOBAL_LOGOUT_PAGE","RENDER_MULTI_LOGIN_ON_GLOBAL_LOGOUT_PAGE","LOGIN_PATH","ADMINISTRATOR_LOGIN_PATH","LOGOUT_PATH","RENDER_FORMS_IN_MODAL","SHOW_SUBMIT_WAIT_TIMEOUT","SWIM_LANE_DIAGRAM_CONFIGURATION","BUSINESS_SCENARIO_CONCEPT_TYPE","BUSINESS_SCENARIO_STEP_CONCEPT_TYPE","BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE","DATE_INPUT_FORMAT","DATE_READONLY_FORMAT","CALENDAR_WEEK_STARTS_ON","CALENDAR_FIRST_WEEK_CONTAINS_DATE","UI_PARAMETERS","ALLOW_HIDE_WHEN_EMPTY_ON_TABS","PAGE_RELOAD_ON_UNAUTHORIZED_ERROR","XHR_TIMEOUT_MS","HIDE_WHEN_EMPTY_IGNORE_TASKS","settings","setSettings","config","getSetting","key","defaultValue","undefined","Error","setSetting","value","allSettings","cacheContributions","getBasePath","getUploadPath","getCaptchaPath","hasAllContentInData","loginType","JAAS","loginPath","loginUsernameField","loginPasswordField","logoutPath","getSwimLaneDiagramConfiguration","configLocation","BASE"],"sources":["../../src/constants/Settings.js"],"sourcesContent":["// @flow\nimport { isPlainObject, has } from \"../utils/helpers/objects\";\nimport { getRepositoryResourceUrl } from \"../utils/helpers/repositoryResource\";\nimport {\n ALL_CONTENT_IN_DATA_SETTING,\n INTERNAL_LOGIN_TYPE,\n LOGIN_TYPE,\n LOGIN_PATH_SETTING,\n LOGIN_USERNAME_SETTING,\n LOGIN_PASSWORD_SETTING,\n LOGOUT_PATH_SETTING,\n UPLOAD_PATH,\n CAPTCHA_PATH,\n} from \"./Constants\";\n\ntype Setting = boolean | string | number | Array<string>;\n\nconst serverBase =\n typeof __CONTEXT_PATH__ === \"undefined\" ? null : __CONTEXT_PATH__;\n\nconst defaultSettings: { [name: string]: Setting } = {\n // This uses contextPath set from property from server\n CONTEXT_PATH:\n serverBase ??\n (typeof window !== \"undefined\" && window.contextPath\n ? window.contextPath\n : \"/BeInformed\"),\n\n // Indicates if contributions should be cached\n CACHE_CONTRIBUTIONS: true,\n\n // Debug missing i18n messages in layout\n DEBUG_I18N_MESSAGE_NOT_FOUND: true,\n\n // Time to show the notification bar\n HIDE_NOTIFICATION_TIMEOUT: 5000,\n\n // Always commit form, does not show result pages for instruments\n ALWAYS_COMMIT_FORM: false,\n\n // Render instrument and event question labels on forms (might result in duplicate labels)\n RENDER_QUESTION_LABELS: true,\n\n // Render mandatory indications on attributes\n RENDER_MANDATORY_ATTRIBUTE_INDICATION: true,\n\n // Render optional indications on attributes\n RENDER_OPTIONAL_ATTRIBUTE_INDICATION: false,\n\n // Renders a toggle with supported list views, options are ListView and TableView\n AVAILABLE_LIST_VIEWS: [\"ListView\", \"TableView\"],\n\n // Toggle client side validation\n USE_CLIENTSIDE_VALIDATION: true,\n\n // Indicates if server validation should be used when a form field is changed\n USE_INSTANT_SERVER_VALIDATION: true,\n\n // Indicates which locales are enabled\n ENABLED_LOCALES: [\"en\", \"nl\"],\n\n // Renders the global log in page\n RENDER_GLOBAL_LOGIN_PAGE: false,\n\n // Renders the global log out page\n RENDER_GLOBAL_LOGOUT_PAGE: false,\n\n // Renders the login variants as option on the global logout page\n RENDER_MULTI_LOGIN_ON_GLOBAL_LOGOUT_PAGE: false,\n\n // Path to login page / component\n LOGIN_PATH: \"/signin\",\n\n // Path to administrator login page / component\n ADMINISTRATOR_LOGIN_PATH: \"\",\n\n // Path to logout page / component\n LOGOUT_PATH: \"/signout\",\n\n // Render forms in a modal\n RENDER_FORMS_IN_MODAL: true,\n\n // Wait timeout before rendering submit wait icon\n SHOW_SUBMIT_WAIT_TIMEOUT: 300,\n\n // Swim lane diagram configuration file\n SWIM_LANE_DIAGRAM_CONFIGURATION: \"/Library/Diagrams/Overviews.json\",\n\n // Business scenario concept types\n BUSINESS_SCENARIO_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/BusinessScenario\",\n ],\n BUSINESS_SCENARIO_STEP_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/ScenarioStep\",\n ],\n BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/Persona\",\n ],\n\n // Input format for dates. Without this setting having a value, the contributions format is used\n DATE_INPUT_FORMAT: \"\",\n\n // Readonly format for dates. Without this setting having a value, the contributions format is used\n DATE_READONLY_FORMAT: \"\",\n\n // indicates on what day the week starts (0 = Sunday)\n CALENDAR_WEEK_STARTS_ON: 1,\n\n // indicates which date indicates the first week of the year\n CALENDAR_FIRST_WEEK_CONTAINS_DATE: 1,\n\n // parameters that are added for the ui state, but should not be send to the modular ui\n UI_PARAMETERS: [],\n\n // disable hide-when-empty hint for layouts running on Be Informed versions older than 21.1\n ALLOW_HIDE_WHEN_EMPTY_ON_TABS: true,\n\n // reload the complete page on signout, usefull when third party authentication is in place\n PAGE_RELOAD_ON_UNAUTHORIZED_ERROR: false,\n\n XHR_TIMEOUT_MS: 300000,\n\n HIDE_WHEN_EMPTY_IGNORE_TASKS: false,\n};\n\nlet settings = defaultSettings;\n\n/**\n */\nexport const setSettings = (config: Object) => {\n if (isPlainObject(config)) {\n settings = Object.assign(defaultSettings, config);\n }\n};\n\n/**\n */\nexport const getSetting = (key: string, defaultValue?: any): any => {\n if (!has(settings, key) && defaultValue === undefined) {\n throw new Error(\n `Setting with name ${key} not found and no defaultValue given`\n );\n }\n\n return settings[key] ?? defaultValue;\n};\n\n/**\n */\nexport const setSetting = (key: string, value: any) => {\n settings[key] = value;\n};\n\n/**\n */\nexport const allSettings = (): { [name: string]: Setting } => settings;\n\n/**\n * Indicates if contributions must be cached\n */\nexport const cacheContributions = (): boolean =>\n getSetting(\"CACHE_CONTRIBUTIONS\", true);\n\n/**\n * Base path\n * This uses contextPath set from property from server\n * When requesting a remote server with CORS enabled, add the origin, for example:\n * export const BEINFORMED_PATH = 'http://192.168.128.61:8080/BeInformed';\n */\nexport const getBasePath = (): string =>\n getSetting(\"CONTEXT_PATH\", \"/BeInformed\");\n\n/**\n * Path to upload service\n */\nexport const getUploadPath = (): string => `${getBasePath()}${UPLOAD_PATH}`;\n\n/**\n * Path to captcha service\n */\nexport const getCaptchaPath = (): string => `${getBasePath()}${CAPTCHA_PATH}`;\n\n/**\n */\nexport const hasAllContentInData = (): boolean =>\n getSetting(ALL_CONTENT_IN_DATA_SETTING, true);\n\n/**\n * Login type, only available when pac4j is configured\n *\n * Preview does not support pac4j, thus is probably not configured when started, which results in login type JAAS\n */\nexport const loginType = (): string =>\n getSetting(LOGIN_TYPE, INTERNAL_LOGIN_TYPE.JAAS);\n\n/**\n */\nexport const loginPath = (): string =>\n getSetting(LOGIN_PATH_SETTING, \"/callback?client_name=FormClient\");\n/**\n */\nexport const loginUsernameField = (): string =>\n getSetting(LOGIN_USERNAME_SETTING, \"j_username\");\n/**\n */\nexport const loginPasswordField = (): string =>\n getSetting(LOGIN_PASSWORD_SETTING, \"j_password\");\n/**\n */\nexport const logoutPath = (): string =>\n getSetting(LOGOUT_PATH_SETTING, \"/logout\");\n\nexport const LOGIN_PATH: string = loginPath();\nexport const LOGOUT_PATH: string = logoutPath();\n\n/**\n * Model overview swim lane configuration\n */\nexport const getSwimLaneDiagramConfiguration: Object = () => {\n let configLocation = getSetting(\n \"SWIM_LANE_DIAGRAM_CONFIGURATION\",\n \"/Library/Diagrams/Overviews.json\"\n );\n if (!configLocation.startsWith(\"/\")) {\n configLocation = `/${configLocation}`;\n }\n return getRepositoryResourceUrl(configLocation);\n};\n\n/**\n * Backwards compatible export of BASE constant\n */\nexport const BASE: string = getBasePath();\n"],"mappings":"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"}
|
|
@@ -63,10 +63,13 @@ export default class ApplicationModel extends ResourceModel {
|
|
|
63
63
|
*/
|
|
64
64
|
get authenticationTypes() {
|
|
65
65
|
const authenticationTypes = this.getContribution("security", [DEFAULT_AUTHENTICATION_TYPE]);
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
if (authenticationTypes) {
|
|
67
|
+
//put primary first
|
|
68
|
+
return authenticationTypes?.sort((a, b) => a.isPrimary === b.isPrimary ? 0 : a.isPrimary ? -1 : 1);
|
|
69
|
+
}
|
|
70
|
+
return [DEFAULT_AUTHENTICATION_TYPE];
|
|
69
71
|
}
|
|
72
|
+
|
|
70
73
|
/**
|
|
71
74
|
* Getting the tab links
|
|
72
75
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationModel.js","names":["ResourceModel","LinkModel","UserServicesModel","NotAllowedUriException","DEFAULT_AUTHENTICATION_TYPE","ApplicationModel","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","userService","links","getLinkByKey","href","path","setChildModels","models","userServiceModel","model","userServices","label","getContribution","authenticationTypes","sort","a","b","isPrimary","tabs","getLinksByGroup","modelcatalog","create","_userServices","isLoggedIn","userHref","userLink"],"sources":["../../../src/models/application/ApplicationModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport LinkModel from \"../links/LinkModel\";\nimport UserServicesModel from \"../user/UserServicesModel\";\n\nimport { NotAllowedUriException } from \"../../exceptions\";\n\nimport { DEFAULT_AUTHENTICATION_TYPE } from \"../../constants\";\n\nimport type { ModularUIModel, AuthenticationType } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type Href from \"../href/Href\";\n\n/**\n * The Application model\n */\nexport default class ApplicationModel extends ResourceModel {\n _userServices: ?UserServicesModel;\n\n /**\n * Retrieve type of model\n */\n get type(): string {\n return \"Application\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ApplicationModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"Application\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const userService = this.links.getLinkByKey(\"UserServices\");\n if (userService && userService.href.path === \"/login\") {\n throw new NotAllowedUriException(\n \"The user service (Login panel) should not have the uri '/login', use a different URI because this uri matches the login service.\"\n );\n }\n\n return userService ? [userService] : [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n const userServiceModel = models.find(\n (model) => model.type === \"UserServices\"\n );\n\n if (userServiceModel) {\n this.userServices = userServiceModel;\n }\n }\n\n /**\n * Getting the label of the application\n */\n get label(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n * Getting the authentication types of the application\n */\n get authenticationTypes(): Array<AuthenticationType> {\n const authenticationTypes = this.getContribution(\"security\", [\n DEFAULT_AUTHENTICATION_TYPE,\n ]);\n\n //put primary first\n
|
|
1
|
+
{"version":3,"file":"ApplicationModel.js","names":["ResourceModel","LinkModel","UserServicesModel","NotAllowedUriException","DEFAULT_AUTHENTICATION_TYPE","ApplicationModel","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","userService","links","getLinkByKey","href","path","setChildModels","models","userServiceModel","model","userServices","label","getContribution","authenticationTypes","sort","a","b","isPrimary","tabs","getLinksByGroup","modelcatalog","create","_userServices","isLoggedIn","userHref","userLink"],"sources":["../../../src/models/application/ApplicationModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport LinkModel from \"../links/LinkModel\";\nimport UserServicesModel from \"../user/UserServicesModel\";\n\nimport { NotAllowedUriException } from \"../../exceptions\";\n\nimport { DEFAULT_AUTHENTICATION_TYPE } from \"../../constants\";\n\nimport type { ModularUIModel, AuthenticationType } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type Href from \"../href/Href\";\n\n/**\n * The Application model\n */\nexport default class ApplicationModel extends ResourceModel {\n _userServices: ?UserServicesModel;\n\n /**\n * Retrieve type of model\n */\n get type(): string {\n return \"Application\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ApplicationModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"Application\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const userService = this.links.getLinkByKey(\"UserServices\");\n if (userService && userService.href.path === \"/login\") {\n throw new NotAllowedUriException(\n \"The user service (Login panel) should not have the uri '/login', use a different URI because this uri matches the login service.\"\n );\n }\n\n return userService ? [userService] : [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n const userServiceModel = models.find(\n (model) => model.type === \"UserServices\"\n );\n\n if (userServiceModel) {\n this.userServices = userServiceModel;\n }\n }\n\n /**\n * Getting the label of the application\n */\n get label(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n * Getting the authentication types of the application\n */\n get authenticationTypes(): Array<AuthenticationType> {\n const authenticationTypes = this.getContribution(\"security\", [\n DEFAULT_AUTHENTICATION_TYPE,\n ]);\n\n if (authenticationTypes) {\n //put primary first\n return authenticationTypes?.sort(\n (a: AuthenticationType, b: AuthenticationType) =>\n a.isPrimary === b.isPrimary ? 0 : a.isPrimary ? -1 : 1\n );\n }\n\n return [DEFAULT_AUTHENTICATION_TYPE];\n }\n\n /**\n * Getting the tab links\n */\n get tabs(): LinkCollection {\n return this.links.getLinksByGroup(\"tab\");\n }\n\n /**\n * Get modelcatalog link\n */\n get modelcatalog(): LinkModel {\n return LinkModel.create(\"modelcatalog\", \"/modelcatalog\", \"Model catalog\");\n }\n\n /**\n * Set the userservices for this application\n */\n set userServices(model: ?ModularUIModel) {\n this._userServices = model instanceof UserServicesModel ? model : null;\n }\n\n /**\n * returns the userservices configured for this application\n */\n get userServices(): ?UserServicesModel {\n return this._userServices ? this._userServices : null;\n }\n\n /**\n * Indicates if the user is logged in\n */\n get isLoggedIn(): boolean {\n return this.userServices?.isLoggedIn ?? false;\n }\n\n /**\n * Retrieve link to the user information,\n * only available when the user services are available\n */\n get userHref(): Href | null {\n if (this.userServices != null && this.userServices.userLink != null) {\n return this.userServices.userLink.href;\n }\n\n return null;\n }\n}\n"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance
|
|
|
4
4
|
import _valuesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/values";
|
|
5
5
|
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
|
6
6
|
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
|
7
|
-
import
|
|
7
|
+
import { klona } from "klona/full";
|
|
8
8
|
import pick from "lodash/pick";
|
|
9
9
|
import { has, isPlainObject } from "../../utils/helpers/objects";
|
|
10
10
|
|
|
@@ -27,7 +27,7 @@ class AttributeDataHelper {
|
|
|
27
27
|
this._attribute = _findInstanceProperty(data).call(data, attr => attr.elementid === key || attr.name === key || attr.param === key) || {};
|
|
28
28
|
this._value = this.getValue(this._attribute);
|
|
29
29
|
} else {
|
|
30
|
-
const attributeData =
|
|
30
|
+
const attributeData = klona(data);
|
|
31
31
|
attributeData._links = pick(data._links, ["concept", "download", "lookupOptions", "lookupList"]);
|
|
32
32
|
this._attribute = attributeData;
|
|
33
33
|
if (data[key] === undefined || "name" in data && "param" in data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributeDataHelper.js","names":["cloneDeep","pick","has","isPlainObject","AttributeDataHelper","constructor","data","key","childrenKeys","_key","Array","isArray","_attribute","attr","elementid","name","param","_value","getValue","attributeData","_links","undefined","_children","createChildren","childData","parentKey","childKey","elements","element","parentData","content","createChild","keyObject","dynamicschema","dynamicschemaId","children","childrenIsArray","value","attribute","suggestions","suggestion","options","option","selected","code","static","links","attrDS","message","isResult","referenceDate","pickedContent","length","getData","child","subChild"],"sources":["../../../src/models/attributes/AttributeDataHelper.js"],"sourcesContent":["// @flow\nimport cloneDeep from \"lodash/cloneDeep\";\nimport pick from \"lodash/pick\";\n\nimport { has, isPlainObject } from \"../../utils/helpers/objects\";\n\n/**\n * This util helps to normalize various attribute data formats available in the modular ui.\n * It fixes differences in choice attributes with dynamic schema's, links on download attributes, composites with various children, etc\n *\n * @private\n */\nclass AttributeDataHelper {\n _key: string;\n _attribute: Object;\n _value: any;\n _children: Array<AttributeDataHelper>;\n\n /**\n */\n constructor(\n data: Object | Array<Object>,\n key: string,\n childrenKeys: Array<Object>\n ) {\n this._key = key;\n\n if (Array.isArray(data)) {\n this._attribute =\n data.find(\n (attr) =>\n attr.elementid === key || attr.name === key || attr.param === key\n ) || {};\n this._value = this.getValue(this._attribute);\n } else {\n const attributeData = cloneDeep(data);\n attributeData._links = pick(data._links, [\n \"concept\",\n \"download\",\n \"lookupOptions\",\n \"lookupList\",\n ]);\n\n this._attribute = attributeData;\n\n if (data[key] === undefined || (\"name\" in data && \"param\" in data)) {\n this._value = this.getValue(data);\n } else {\n this._value = data[key];\n }\n }\n\n this._children = this.createChildren(data, childrenKeys);\n }\n\n /**\n */\n childData(\n data: Object | Array<Object>,\n parentKey: string,\n childKey: string\n ): Object {\n if (Array.isArray(data)) {\n if (Array.isArray(this._attribute.elements)) {\n return this._attribute.elements.find(\n (element) => element.elementid === childKey\n );\n }\n } else if (has(data, parentKey) && isPlainObject(data[parentKey])) {\n const parentData = data[parentKey];\n if (isPlainObject(parentData) && data.content?.[childKey]) {\n return { ...parentData, content: data.content[childKey] };\n }\n return parentData;\n } else if (has(data, childKey) && isPlainObject(data[childKey])) {\n return data[childKey];\n }\n\n if (isPlainObject(data)) {\n return data;\n }\n\n return {};\n }\n\n /**\n */\n createChild(\n data: Object | Array<Object>,\n childData: Object,\n keyObject: Object\n ): AttributeDataHelper {\n const dynamicschema =\n isPlainObject(data) && !Array.isArray(data)\n ? data.dynamicschema\n : undefined;\n\n let dynamicschemaId = null;\n if (keyObject.dynamicschemaId) {\n dynamicschemaId = keyObject.dynamicschemaId;\n } else if (\n isPlainObject(data) &&\n typeof data.key === \"string\" &&\n keyObject.key\n ) {\n dynamicschemaId = `${data.key}.${keyObject.key}`;\n }\n\n return new AttributeDataHelper(\n {\n ...childData,\n dynamicschema,\n dynamicschemaId,\n },\n keyObject.key,\n keyObject.children\n );\n }\n\n /**\n */\n createChildren(\n data: Object | Array<Object>,\n childrenKeys: Array<Object> = []\n ): Array<AttributeDataHelper> {\n const childrenIsArray = Array.isArray(this.value);\n\n if (childrenIsArray) {\n return this.value.map((value) =>\n childrenKeys.map((keyObject) => {\n const childData = this.childData(value, this.key, keyObject.key);\n\n return this.createChild(data, childData, keyObject);\n })\n );\n }\n\n return childrenKeys.map((keyObject) => {\n const childData = this.childData(data, this.key, keyObject.key);\n\n return this.createChild(data, childData, keyObject);\n });\n }\n\n /**\n */\n getValue(attribute: Object): any {\n if (\"values\" in attribute) {\n return attribute.values;\n }\n\n if (\"value\" in attribute) {\n return attribute.value;\n }\n\n if (\"suggestions\" in attribute) {\n return attribute.suggestions;\n }\n\n if (\"suggestion\" in attribute) {\n return attribute.suggestion;\n }\n\n if (Array.isArray(attribute.options)) {\n return attribute.options\n .filter((option) => option.selected)\n .map((option) => option.code || option.key);\n }\n\n return null;\n }\n\n /**\n */\n get key(): string {\n return this._key;\n }\n\n /**\n */\n get value(): any {\n return this._value;\n }\n\n /**\n */\n get static(): boolean {\n return this._attribute.static || false;\n }\n\n /**\n */\n get links(): any {\n return this._attribute._links || void 0;\n }\n\n /**\n */\n get dynamicschemaId(): string {\n return this._attribute.dynamicschemaId || this.key;\n }\n\n /*\n retrieve the dynamischema by the dynamischemaId\n mentioned in the contributions of the attribute\n */\n /**\n */\n get dynamicschema(): any {\n const { dynamicschema } = this._attribute;\n if (!dynamicschema) {\n return void 0;\n }\n\n if (Array.isArray(dynamicschema)) {\n return dynamicschema;\n } else if (dynamicschema[this.dynamicschemaId]) {\n const attrDS = dynamicschema[this.dynamicschemaId];\n return attrDS.map((attr) => {\n if (attr.elements) {\n return {\n ...attr,\n elements: {\n ...attr.elements,\n dynamicschema,\n },\n };\n }\n\n return attr;\n });\n }\n\n return void 0;\n }\n\n /**\n */\n get options(): any {\n return this._attribute.options || void 0;\n }\n\n /**\n */\n get message(): any {\n return this._attribute.message || void 0;\n }\n\n /**\n */\n get isResult(): boolean {\n return this._attribute.isResult || false;\n }\n\n /**\n */\n get referenceDate(): any {\n return this._attribute.referenceDate || void 0;\n }\n\n /**\n */\n get children(): Array<AttributeDataHelper> {\n return this._children || [];\n }\n\n /**\n */\n get content(): Object {\n if (this._attribute.content) {\n const pickedContent = pick(this._attribute.content, [\n \"header\",\n \"label\",\n \"elements\",\n \"layouthint\",\n \"text\",\n ]);\n\n if (Object.keys(pickedContent).length > 0) {\n return pickedContent;\n }\n }\n\n return null;\n }\n\n /**\n */\n getData(): Object {\n return {\n key: this.key,\n value: this.value,\n static: this.static,\n _links: this.links,\n dynamicschema: this.dynamicschema,\n dynamicschemaId: this.dynamicschemaId,\n options: this.options,\n message: this.message,\n isResult: this.isResult,\n referenceDate: this.referenceDate,\n children: this.children.map((child) =>\n Array.isArray(child)\n ? child.map((subChild) => subChild.getData())\n : child.getData()\n ),\n content: this.content,\n };\n }\n}\n\nexport default AttributeDataHelper;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AttributeDataHelper.js","names":["klona","pick","has","isPlainObject","AttributeDataHelper","constructor","data","key","childrenKeys","_key","Array","isArray","_attribute","attr","elementid","name","param","_value","getValue","attributeData","_links","undefined","_children","createChildren","childData","parentKey","childKey","elements","element","parentData","content","createChild","keyObject","dynamicschema","dynamicschemaId","children","childrenIsArray","value","attribute","suggestions","suggestion","options","option","selected","code","static","links","attrDS","message","isResult","referenceDate","pickedContent","length","getData","child","subChild"],"sources":["../../../src/models/attributes/AttributeDataHelper.js"],"sourcesContent":["// @flow\nimport { klona } from \"klona/full\";\nimport pick from \"lodash/pick\";\n\nimport { has, isPlainObject } from \"../../utils/helpers/objects\";\n\n/**\n * This util helps to normalize various attribute data formats available in the modular ui.\n * It fixes differences in choice attributes with dynamic schema's, links on download attributes, composites with various children, etc\n *\n * @private\n */\nclass AttributeDataHelper {\n _key: string;\n _attribute: Object;\n _value: any;\n _children: Array<AttributeDataHelper>;\n\n /**\n */\n constructor(\n data: Object | Array<Object>,\n key: string,\n childrenKeys: Array<Object>\n ) {\n this._key = key;\n\n if (Array.isArray(data)) {\n this._attribute =\n data.find(\n (attr) =>\n attr.elementid === key || attr.name === key || attr.param === key\n ) || {};\n this._value = this.getValue(this._attribute);\n } else {\n const attributeData = klona(data);\n attributeData._links = pick(data._links, [\n \"concept\",\n \"download\",\n \"lookupOptions\",\n \"lookupList\",\n ]);\n\n this._attribute = attributeData;\n\n if (data[key] === undefined || (\"name\" in data && \"param\" in data)) {\n this._value = this.getValue(data);\n } else {\n this._value = data[key];\n }\n }\n\n this._children = this.createChildren(data, childrenKeys);\n }\n\n /**\n */\n childData(\n data: Object | Array<Object>,\n parentKey: string,\n childKey: string\n ): Object {\n if (Array.isArray(data)) {\n if (Array.isArray(this._attribute.elements)) {\n return this._attribute.elements.find(\n (element) => element.elementid === childKey\n );\n }\n } else if (has(data, parentKey) && isPlainObject(data[parentKey])) {\n const parentData = data[parentKey];\n if (isPlainObject(parentData) && data.content?.[childKey]) {\n return { ...parentData, content: data.content[childKey] };\n }\n return parentData;\n } else if (has(data, childKey) && isPlainObject(data[childKey])) {\n return data[childKey];\n }\n\n if (isPlainObject(data)) {\n return data;\n }\n\n return {};\n }\n\n /**\n */\n createChild(\n data: Object | Array<Object>,\n childData: Object,\n keyObject: Object\n ): AttributeDataHelper {\n const dynamicschema =\n isPlainObject(data) && !Array.isArray(data)\n ? data.dynamicschema\n : undefined;\n\n let dynamicschemaId = null;\n if (keyObject.dynamicschemaId) {\n dynamicschemaId = keyObject.dynamicschemaId;\n } else if (\n isPlainObject(data) &&\n typeof data.key === \"string\" &&\n keyObject.key\n ) {\n dynamicschemaId = `${data.key}.${keyObject.key}`;\n }\n\n return new AttributeDataHelper(\n {\n ...childData,\n dynamicschema,\n dynamicschemaId,\n },\n keyObject.key,\n keyObject.children\n );\n }\n\n /**\n */\n createChildren(\n data: Object | Array<Object>,\n childrenKeys: Array<Object> = []\n ): Array<AttributeDataHelper> {\n const childrenIsArray = Array.isArray(this.value);\n\n if (childrenIsArray) {\n return this.value.map((value) =>\n childrenKeys.map((keyObject) => {\n const childData = this.childData(value, this.key, keyObject.key);\n\n return this.createChild(data, childData, keyObject);\n })\n );\n }\n\n return childrenKeys.map((keyObject) => {\n const childData = this.childData(data, this.key, keyObject.key);\n\n return this.createChild(data, childData, keyObject);\n });\n }\n\n /**\n */\n getValue(attribute: Object): any {\n if (\"values\" in attribute) {\n return attribute.values;\n }\n\n if (\"value\" in attribute) {\n return attribute.value;\n }\n\n if (\"suggestions\" in attribute) {\n return attribute.suggestions;\n }\n\n if (\"suggestion\" in attribute) {\n return attribute.suggestion;\n }\n\n if (Array.isArray(attribute.options)) {\n return attribute.options\n .filter((option) => option.selected)\n .map((option) => option.code || option.key);\n }\n\n return null;\n }\n\n /**\n */\n get key(): string {\n return this._key;\n }\n\n /**\n */\n get value(): any {\n return this._value;\n }\n\n /**\n */\n get static(): boolean {\n return this._attribute.static || false;\n }\n\n /**\n */\n get links(): any {\n return this._attribute._links || void 0;\n }\n\n /**\n */\n get dynamicschemaId(): string {\n return this._attribute.dynamicschemaId || this.key;\n }\n\n /*\n retrieve the dynamischema by the dynamischemaId\n mentioned in the contributions of the attribute\n */\n /**\n */\n get dynamicschema(): any {\n const { dynamicschema } = this._attribute;\n if (!dynamicschema) {\n return void 0;\n }\n\n if (Array.isArray(dynamicschema)) {\n return dynamicschema;\n } else if (dynamicschema[this.dynamicschemaId]) {\n const attrDS = dynamicschema[this.dynamicschemaId];\n return attrDS.map((attr) => {\n if (attr.elements) {\n return {\n ...attr,\n elements: {\n ...attr.elements,\n dynamicschema,\n },\n };\n }\n\n return attr;\n });\n }\n\n return void 0;\n }\n\n /**\n */\n get options(): any {\n return this._attribute.options || void 0;\n }\n\n /**\n */\n get message(): any {\n return this._attribute.message || void 0;\n }\n\n /**\n */\n get isResult(): boolean {\n return this._attribute.isResult || false;\n }\n\n /**\n */\n get referenceDate(): any {\n return this._attribute.referenceDate || void 0;\n }\n\n /**\n */\n get children(): Array<AttributeDataHelper> {\n return this._children || [];\n }\n\n /**\n */\n get content(): Object {\n if (this._attribute.content) {\n const pickedContent = pick(this._attribute.content, [\n \"header\",\n \"label\",\n \"elements\",\n \"layouthint\",\n \"text\",\n ]);\n\n if (Object.keys(pickedContent).length > 0) {\n return pickedContent;\n }\n }\n\n return null;\n }\n\n /**\n */\n getData(): Object {\n return {\n key: this.key,\n value: this.value,\n static: this.static,\n _links: this.links,\n dynamicschema: this.dynamicschema,\n dynamicschemaId: this.dynamicschemaId,\n options: this.options,\n message: this.message,\n isResult: this.isResult,\n referenceDate: this.referenceDate,\n children: this.children.map((child) =>\n Array.isArray(child)\n ? child.map((subChild) => subChild.getData())\n : child.getData()\n ),\n content: this.content,\n };\n }\n}\n\nexport default AttributeDataHelper;\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
|
|
2
2
|
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
|
3
3
|
import _findInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find";
|
|
4
|
-
import
|
|
4
|
+
import { klona } from "klona/full";
|
|
5
5
|
import { has, isPlainObject } from "../../utils/helpers/objects";
|
|
6
6
|
import LayoutHintRuleCollection from "./layouthint-rules/LayoutHintRuleCollection";
|
|
7
7
|
import CaptchaAttributeModel from "./CaptchaAttributeModel";
|
|
@@ -60,7 +60,7 @@ const updateContributions = (key, data, contributions) => {
|
|
|
60
60
|
* @private
|
|
61
61
|
*/
|
|
62
62
|
const updateData = (key, data, contributions) => {
|
|
63
|
-
const newData =
|
|
63
|
+
const newData = klona(data);
|
|
64
64
|
if (contributions.dynamicschemaId) {
|
|
65
65
|
newData.dynamicschemaId = contributions.dynamicschemaId;
|
|
66
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_createAttribute.js","names":["
|
|
1
|
+
{"version":3,"file":"_createAttribute.js","names":["klona","has","isPlainObject","LayoutHintRuleCollection","CaptchaAttributeModel","ChoiceAttributeModel","DatetimeAttributeModel","HelptextAttributeModel","LabelAttributeModel","MemoAttributeModel","MoneyAttributeModel","NumberAttributeModel","PasswordAttributeModel","CompositeAttributeModel","StringAttributeModel","UploadAttributeModel","XMLAttributeModel","BooleanAttributeModel","AttributeDataHelper","getChildrenKeys","children","child","childKey","isComposite","type","key","dynamicschemaId","undefined","getAttributeModel","contributions","ATTRIBUTE_MODELS","model","isApplicableModel","updateContributions","data","Array","isArray","updateData","newData","createAttribute","updatedContributions","updatedData","Model","Error","childrenKeys","dataHelper","getData","attribute","setLayoutHintRules"],"sources":["../../../src/models/attributes/_createAttribute.js"],"sourcesContent":["// @flow\nimport { klona } from \"klona/full\";\n\nimport { has, isPlainObject } from \"../../utils/helpers/objects\";\n\nimport LayoutHintRuleCollection from \"./layouthint-rules/LayoutHintRuleCollection\";\n\nimport CaptchaAttributeModel from \"./CaptchaAttributeModel\";\nimport ChoiceAttributeModel from \"./ChoiceAttributeModel\";\nimport DatetimeAttributeModel from \"./DatetimeAttributeModel\";\nimport HelptextAttributeModel from \"./HelptextAttributeModel\";\nimport LabelAttributeModel from \"./LabelAttributeModel\";\nimport MemoAttributeModel from \"./MemoAttributeModel\";\nimport MoneyAttributeModel from \"./MoneyAttributeModel\";\nimport NumberAttributeModel from \"./NumberAttributeModel\";\nimport PasswordAttributeModel from \"./PasswordAttributeModel\";\nimport CompositeAttributeModel from \"./CompositeAttributeModel\";\nimport StringAttributeModel from \"./StringAttributeModel\";\nimport UploadAttributeModel from \"./UploadAttributeModel\";\nimport XMLAttributeModel from \"./XMLAttributeModel\";\nimport BooleanAttributeModel from \"./BooleanAttributeModel\";\n\nimport AttributeDataHelper from \"./AttributeDataHelper\";\n\nimport type { AttributeType } from \"../types\";\n\n/**\n * @private\n */\nconst getChildrenKeys = (children: Array<Object>): Array<Object> => {\n if (children) {\n return children.map((child) => {\n const [childKey] = Object.keys(child);\n const isComposite =\n child[childKey].type === \"range\" ||\n child[childKey].type === \"composite\";\n\n return {\n key: childKey,\n dynamicschemaId: child[childKey]?.dynamicschemaId || undefined,\n children: isComposite ? getChildrenKeys(child[childKey]?.children) : [],\n };\n });\n }\n\n return [];\n};\n\n/**\n * @private\n */\nconst getAttributeModel = (contributions: Object): ?Class<AttributeType> => {\n const ATTRIBUTE_MODELS = [\n ChoiceAttributeModel,\n BooleanAttributeModel,\n\n HelptextAttributeModel,\n LabelAttributeModel,\n\n XMLAttributeModel,\n MemoAttributeModel,\n StringAttributeModel,\n\n DatetimeAttributeModel,\n\n MoneyAttributeModel,\n NumberAttributeModel,\n PasswordAttributeModel,\n\n UploadAttributeModel,\n CompositeAttributeModel,\n CaptchaAttributeModel,\n ];\n\n return ATTRIBUTE_MODELS.find((model) =>\n model.isApplicableModel(contributions)\n );\n};\n\n/**\n * @private\n */\nconst updateContributions = (\n key: string,\n data: Object,\n contributions: Object\n): Object => {\n const isComposite =\n contributions.type === \"array\" &&\n has(contributions, \"children\") &&\n isPlainObject(data) &&\n Array.isArray(data[key]);\n\n return {\n ...contributions,\n type: isComposite ? \"composite\" : contributions.type,\n };\n};\n\n/**\n * @private\n */\nconst updateData = (\n key: string,\n data: Object,\n contributions: Object\n): Object => {\n const newData = klona(data);\n\n if (contributions.dynamicschemaId) {\n newData.dynamicschemaId = contributions.dynamicschemaId;\n }\n\n return newData;\n};\n\n/**\n * Create an attribute based on data and contributions\n */\nconst createAttribute = (\n key: string,\n data: Object | Array<Object>,\n contributions: Object\n): AttributeType => {\n const updatedContributions = updateContributions(key, data, contributions);\n const updatedData = updateData(key, data, contributions);\n\n const Model = getAttributeModel(updatedContributions);\n\n if (!Model) {\n throw new Error(\"Could not find model\");\n }\n\n const childrenKeys = getChildrenKeys(updatedContributions.children ?? []);\n const dataHelper = new AttributeDataHelper(\n updatedData,\n key,\n childrenKeys\n ).getData();\n\n const attribute = new Model(dataHelper, updatedContributions);\n\n return LayoutHintRuleCollection.setLayoutHintRules(attribute);\n};\n\nexport default createAttribute;\n"],"mappings":"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"}
|
|
@@ -4,8 +4,7 @@ import _findInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instanc
|
|
|
4
4
|
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
|
5
5
|
import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
|
|
6
6
|
import _sortInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/sort";
|
|
7
|
-
import
|
|
8
|
-
import cloneDeep from "lodash/cloneDeep";
|
|
7
|
+
import { klona } from "klona/full";
|
|
9
8
|
|
|
10
9
|
/**
|
|
11
10
|
* Base class for collections of models
|
|
@@ -171,15 +170,10 @@ class BaseCollection {
|
|
|
171
170
|
}
|
|
172
171
|
|
|
173
172
|
/**
|
|
174
|
-
* Returns a clone of the model
|
|
173
|
+
* Returns a clone of the model
|
|
175
174
|
*/
|
|
176
175
|
clone() {
|
|
177
|
-
|
|
178
|
-
// deepcopy can be expensive, use with care!
|
|
179
|
-
if (deepcopy) {
|
|
180
|
-
return cloneDeep(this);
|
|
181
|
-
}
|
|
182
|
-
return clone(this);
|
|
176
|
+
return klona(this);
|
|
183
177
|
}
|
|
184
178
|
}
|
|
185
179
|
export default BaseCollection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseCollection.js","names":["
|
|
1
|
+
{"version":3,"file":"BaseCollection.js","names":["klona","BaseCollection","constructor","initCollection","collection","_collection","add","items","all","Array","isArray","removeByIndex","itemIndex","hasItems","length","isEmpty","size","first","last","get","index","find","callbackfn","thisArg","filter","some","every","map","forEach","sort","compareFn","sorted","clone"],"sources":["../../../src/models/base/BaseCollection.js"],"sourcesContent":["// @flow\nimport { klona } from \"klona/full\";\n\n/**\n * Base class for collections of models\n */\nclass BaseCollection<T> {\n _collection: Array<T>;\n\n /**\n * Construct base collection\n */\n constructor(initCollection: Array<T> = []) {\n this.collection = initCollection;\n }\n\n /**\n * Retrieve current collection\n */\n get collection(): Array<T> {\n return this._collection;\n }\n\n /**\n * Replace current collection with a new collection\n */\n set collection(collection: Array<T>) {\n this._collection = collection;\n }\n\n /**\n * Add an other collection, array of items or single item to this collection;\n */\n add(items: BaseCollection<T> | Array<T> | T): BaseCollection<T> {\n if (items instanceof BaseCollection) {\n this.collection = [...this.collection, ...items.all];\n } else if (Array.isArray(items)) {\n // $FlowExpectedError[incompatible-type]\n this.collection = [...this.collection, ...items];\n } else {\n this.collection = [...this.collection, items];\n }\n\n return this;\n }\n\n /**\n * Remove an item from the collection by it's index.\n */\n removeByIndex(itemIndex: number) {\n if (itemIndex > -1) {\n this.collection = [\n ...this.collection.slice(0, itemIndex),\n ...this.collection.slice(itemIndex + 1),\n ];\n }\n }\n\n /**\n * Indicates if the collection has items\n */\n get hasItems(): boolean {\n return this.length > 0;\n }\n\n /**\n * Indicates if collection is empty\n */\n get isEmpty(): boolean {\n return !this.hasItems;\n }\n\n /**\n * Retrieve all items in collection\n */\n get all(): Array<T> {\n return this.collection;\n }\n\n /**\n * Get the size of this collection\n */\n get size(): number {\n return this.length;\n }\n\n /**\n * Get the size of this collection\n */\n get length(): number {\n return this.collection.length;\n }\n\n /**\n * Return first link in collection\n */\n get first(): T | null {\n return this.collection[0] ?? null;\n }\n\n /**\n */\n get last(): T | null {\n return this.collection[this.collection.length - 1] ?? null;\n }\n\n /**\n */\n get(index: number): T | null {\n return this.collection[index] ?? null;\n }\n\n /**\n * Find item\n */\n find(\n callbackfn: (value: T, index: number, array: Array<T>) => any,\n thisArg?: any\n ): T | null {\n return this.collection.find(callbackfn, thisArg) ?? null;\n }\n\n /**\n * Filter items\n */\n filter(\n callbackfn: (value: T, index: number, array: Array<T>) => any,\n thisArg?: any\n ): Array<T> {\n return this.collection.filter(callbackfn, thisArg);\n }\n\n /**\n * Check if at least one item occurs\n */\n some(\n callbackfn: (value: T, index: number, array: Array<T>) => any,\n thisArg?: any\n ): boolean {\n return this.collection.some(callbackfn, thisArg);\n }\n\n /**\n */\n every(\n callbackfn: (value: T, index: number, array: Array<T>) => any,\n thisArg?: any\n ): boolean {\n return this.collection.every(callbackfn, thisArg);\n }\n\n /**\n */\n map<U>(\n callbackfn: (value: T, index: number, array: Array<T>) => U,\n thisArg?: T\n ): Array<U> {\n return this.collection.map<U, ?T>(callbackfn, thisArg);\n }\n\n /**\n */\n forEach(\n callbackfn: (value: T, index: number, array: Array<T>) => any,\n thisArg?: any\n ) {\n this.collection.forEach(callbackfn, thisArg);\n }\n\n /**\n */\n sort(compareFn?: (a: T, b: T) => number): Array<T> {\n return this.collection.sort(compareFn);\n }\n\n /**\n * Retrieve an alphabetically sorted array of items\n */\n get sorted(): Array<T> {\n return this.collection.sort();\n }\n\n /**\n * Returns a clone of the model\n */\n clone(): this {\n return klona(this);\n }\n}\n\nexport default BaseCollection;\n"],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
|
|
2
2
|
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
|
3
|
-
import
|
|
4
|
-
import cloneDeep from "lodash/cloneDeep";
|
|
3
|
+
import { klona } from "klona/full";
|
|
5
4
|
import LayoutHintCollection from "../layouthint/LayoutHintCollection";
|
|
6
5
|
/**
|
|
7
6
|
* Base model, this is the foundation of a model,
|
|
@@ -110,12 +109,7 @@ class BaseModel {
|
|
|
110
109
|
* Returns a clone of the model
|
|
111
110
|
*/
|
|
112
111
|
clone() {
|
|
113
|
-
|
|
114
|
-
// deepcopy can be expensive, use with care!
|
|
115
|
-
if (deepcopy) {
|
|
116
|
-
return cloneDeep(this);
|
|
117
|
-
}
|
|
118
|
-
return clone(this);
|
|
112
|
+
return klona(this);
|
|
119
113
|
}
|
|
120
114
|
}
|
|
121
115
|
export default BaseModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseModel.js","names":["
|
|
1
|
+
{"version":3,"file":"BaseModel.js","names":["klona","LayoutHintCollection","BaseModel","constructor","data","contributions","_data","_contributions","_layouthint","getContribution","getData","propName","defaultValue","layouthint","hasData","length","connectKey","key","_connectKey","dehydrate","rehydrate","clone"],"sources":["../../../src/models/base/BaseModel.js"],"sourcesContent":["// @flow\nimport { klona } from \"klona/full\";\n\nimport LayoutHintCollection from \"../layouthint/LayoutHintCollection\";\n\nexport type BaseDehydrateData = {\n +data: Object,\n +contributions: Object,\n connectKey: string,\n ...\n};\n\n/**\n * Base model, this is the foundation of a model,\n * it contains data that is needed for all models like, data, contributions and layout hint\n *\n * Extend this for non modular ui resources, for modular ui resource start with the resourceModel\n */\nclass BaseModel {\n _data: Object;\n _contributions: Object;\n _layouthint: LayoutHintCollection;\n _connectKey: string;\n\n /**\n * constructor\n */\n constructor(data: Object, contributions: Object) {\n this._data = data;\n this._contributions = contributions;\n this._layouthint = new LayoutHintCollection(\n this.getContribution(\"layouthint\", [])\n );\n }\n\n /**\n * Retrieve data\n */\n get data(): Object {\n return this._data || {};\n }\n\n /**\n * Retrieve property from the data object of the model, mostly used internal\n */\n getData(propName: string, defaultValue: any = null): any {\n return this.data[propName] ?? defaultValue;\n }\n\n /**\n * Retrieve contributions\n */\n get contributions(): Object {\n return this._contributions || {};\n }\n\n /**\n * Retrieve property from the contributions of the model, mostly used internal\n */\n getContribution(propName: string, defaultValue: any = null): any {\n return this.contributions[propName] ?? defaultValue;\n }\n\n /**\n * Getting the layouthint\n */\n get layouthint(): LayoutHintCollection {\n return this._layouthint;\n }\n\n /**\n * Set the layouthint\n */\n set layouthint(layouthint: Array<string>) {\n this._layouthint = new LayoutHintCollection(layouthint);\n }\n\n /**\n * Indicates if the model has data\n */\n get hasData(): boolean {\n return Object.keys(this.data).length > 0;\n }\n\n /**\n * Set the unique key for this model\n */\n set connectKey(key: string) {\n this._connectKey = key;\n }\n\n /**\n * Get the unique key of this model\n */\n get connectKey(): string {\n return this._connectKey;\n }\n\n /**\n * Dehydrate internal data, returns the information that is needed to recreate the model\n */\n dehydrate(): BaseDehydrateData {\n return {\n data: this._data,\n contributions: this._contributions,\n connectKey: this._connectKey,\n };\n }\n\n /**\n * Recreate the model with the given data\n */\n rehydrate(data: BaseDehydrateData) {\n this._connectKey = data.connectKey;\n }\n\n /**\n * Returns a clone of the model\n */\n clone(): any {\n return klona(this);\n }\n}\n\nexport default BaseModel;\n"],"mappings":";;AACA,SAASA,KAAK,QAAQ,YAAY;AAElC,OAAOC,oBAAoB,MAAM,oCAAoC;AASrE;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,SAAS,CAAC;EAMd;AACF;AACA;EACEC,WAAW,CAACC,IAAY,EAAEC,aAAqB,EAAE;IAAA;IAAA;IAAA;IAAA;IAC/C,IAAI,CAACC,KAAK,GAAGF,IAAI;IACjB,IAAI,CAACG,cAAc,GAAGF,aAAa;IACnC,IAAI,CAACG,WAAW,GAAG,IAAIP,oBAAoB,CACzC,IAAI,CAACQ,eAAe,CAAC,YAAY,EAAE,EAAE,CAAC,CACvC;EACH;;EAEA;AACF;AACA;EACE,IAAIL,IAAI,GAAW;IACjB,OAAO,IAAI,CAACE,KAAK,IAAI,CAAC,CAAC;EACzB;;EAEA;AACF;AACA;EACEI,OAAO,CAACC,QAAgB,EAAiC;IAAA,IAA/BC,YAAiB,uEAAG,IAAI;IAChD,OAAO,IAAI,CAACR,IAAI,CAACO,QAAQ,CAAC,IAAIC,YAAY;EAC5C;;EAEA;AACF;AACA;EACE,IAAIP,aAAa,GAAW;IAC1B,OAAO,IAAI,CAACE,cAAc,IAAI,CAAC,CAAC;EAClC;;EAEA;AACF;AACA;EACEE,eAAe,CAACE,QAAgB,EAAiC;IAAA,IAA/BC,YAAiB,uEAAG,IAAI;IACxD,OAAO,IAAI,CAACP,aAAa,CAACM,QAAQ,CAAC,IAAIC,YAAY;EACrD;;EAEA;AACF;AACA;EACE,IAAIC,UAAU,GAAyB;IACrC,OAAO,IAAI,CAACL,WAAW;EACzB;;EAEA;AACF;AACA;EACE,IAAIK,UAAU,CAACA,UAAyB,EAAE;IACxC,IAAI,CAACL,WAAW,GAAG,IAAIP,oBAAoB,CAACY,UAAU,CAAC;EACzD;;EAEA;AACF;AACA;EACE,IAAIC,OAAO,GAAY;IACrB,OAAO,aAAY,IAAI,CAACV,IAAI,CAAC,CAACW,MAAM,GAAG,CAAC;EAC1C;;EAEA;AACF;AACA;EACE,IAAIC,UAAU,CAACC,GAAW,EAAE;IAC1B,IAAI,CAACC,WAAW,GAAGD,GAAG;EACxB;;EAEA;AACF;AACA;EACE,IAAID,UAAU,GAAW;IACvB,OAAO,IAAI,CAACE,WAAW;EACzB;;EAEA;AACF;AACA;EACEC,SAAS,GAAsB;IAC7B,OAAO;MACLf,IAAI,EAAE,IAAI,CAACE,KAAK;MAChBD,aAAa,EAAE,IAAI,CAACE,cAAc;MAClCS,UAAU,EAAE,IAAI,CAACE;IACnB,CAAC;EACH;;EAEA;AACF;AACA;EACEE,SAAS,CAAChB,IAAuB,EAAE;IACjC,IAAI,CAACc,WAAW,GAAGd,IAAI,CAACY,UAAU;EACpC;;EAEA;AACF;AACA;EACEK,KAAK,GAAQ;IACX,OAAOrB,KAAK,CAAC,IAAI,CAAC;EACpB;AACF;AAEA,eAAeE,SAAS"}
|
|
@@ -5,7 +5,7 @@ import { HTTP_METHODS } from "../constants/Constants";
|
|
|
5
5
|
import universalFetch from "../utils/fetch/universalFetch";
|
|
6
6
|
import Cache from "../utils/browser/Cache";
|
|
7
7
|
import { UnauthorizedException } from "../exceptions";
|
|
8
|
-
import { loginType, loginPath, loginPasswordField, loginUsernameField, logoutPath, getBasePath } from "../constants";
|
|
8
|
+
import { INTERNAL_LOGIN_TYPE, loginType, loginPath, loginPasswordField, loginUsernameField, logoutPath, getBasePath } from "../constants";
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
*/
|
|
@@ -21,13 +21,13 @@ class Authenticate {
|
|
|
21
21
|
*/
|
|
22
22
|
get authenticationType() {
|
|
23
23
|
const type = loginType();
|
|
24
|
-
if (!type || type ===
|
|
25
|
-
return
|
|
24
|
+
if (!type || type === INTERNAL_LOGIN_TYPE.JAAS) {
|
|
25
|
+
return INTERNAL_LOGIN_TYPE.JAAS;
|
|
26
26
|
}
|
|
27
27
|
if (_includesInstanceProperty(type).call(type, "FormClient")) {
|
|
28
|
-
return
|
|
28
|
+
return INTERNAL_LOGIN_TYPE.PAC4J_FORM;
|
|
29
29
|
} else if (_includesInstanceProperty(type).call(type, "BasicClient")) {
|
|
30
|
-
return
|
|
30
|
+
return INTERNAL_LOGIN_TYPE.PAC4J_BASIC;
|
|
31
31
|
}
|
|
32
32
|
throw new Error(`Unsupported login type found: ${type}`);
|
|
33
33
|
}
|
|
@@ -35,7 +35,7 @@ class Authenticate {
|
|
|
35
35
|
/**
|
|
36
36
|
*/
|
|
37
37
|
get isBasicAuthentication() {
|
|
38
|
-
return this._isBasic || this.authenticationType ===
|
|
38
|
+
return this._isBasic || this.authenticationType === INTERNAL_LOGIN_TYPE.PAC4J_BASIC;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
/**
|
|
@@ -78,9 +78,9 @@ class Authenticate {
|
|
|
78
78
|
*/
|
|
79
79
|
login(username, password) {
|
|
80
80
|
switch (this.authenticationType) {
|
|
81
|
-
case
|
|
81
|
+
case INTERNAL_LOGIN_TYPE.PAC4J_FORM:
|
|
82
82
|
return this.doFormLogin(username, password);
|
|
83
|
-
case
|
|
83
|
+
case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:
|
|
84
84
|
return this.doBasicAuthentication(username, password);
|
|
85
85
|
default:
|
|
86
86
|
return this.doJaasAuthentication(username, password);
|
|
@@ -91,8 +91,8 @@ class Authenticate {
|
|
|
91
91
|
*/
|
|
92
92
|
getFormLoginUrl() {
|
|
93
93
|
switch (this.authenticationType) {
|
|
94
|
-
case
|
|
95
|
-
case
|
|
94
|
+
case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:
|
|
95
|
+
case INTERNAL_LOGIN_TYPE.PAC4J_FORM:
|
|
96
96
|
return `${getBasePath()}${loginPath()}`;
|
|
97
97
|
default:
|
|
98
98
|
return `${getBasePath()}/j_security_check`;
|
|
@@ -105,8 +105,8 @@ class Authenticate {
|
|
|
105
105
|
const encodedUsername = encodeURIComponent(username);
|
|
106
106
|
const encodedPassword = encodeURIComponent(password);
|
|
107
107
|
switch (this.authenticationType) {
|
|
108
|
-
case
|
|
109
|
-
case
|
|
108
|
+
case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:
|
|
109
|
+
case INTERNAL_LOGIN_TYPE.PAC4J_FORM:
|
|
110
110
|
return `${loginUsernameField()}=${encodedUsername}&${loginPasswordField()}=${encodedPassword}`;
|
|
111
111
|
default:
|
|
112
112
|
return `j_username=${encodedUsername}&j_password=${encodedPassword}`;
|
|
@@ -145,11 +145,23 @@ class Authenticate {
|
|
|
145
145
|
});
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
+
/**
|
|
149
|
+
*/
|
|
150
|
+
getLogoutUrl() {
|
|
151
|
+
switch (this.authenticationType) {
|
|
152
|
+
case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:
|
|
153
|
+
case INTERNAL_LOGIN_TYPE.PAC4J_FORM:
|
|
154
|
+
return `${getBasePath()}${logoutPath()}`;
|
|
155
|
+
default:
|
|
156
|
+
return `${getBasePath()}/Logoff`;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
148
160
|
/**
|
|
149
161
|
*/
|
|
150
162
|
logout() {
|
|
151
163
|
return universalFetch({
|
|
152
|
-
url:
|
|
164
|
+
url: this.getLogoutUrl()
|
|
153
165
|
}).then(response => {
|
|
154
166
|
// clear cache because of cached contributions
|
|
155
167
|
Cache.clear();
|