@beinformed/ui 1.17.4 → 1.18.1
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 +8 -0
- package/esm/constants/Constants.js +4 -0
- package/esm/constants/Constants.js.map +1 -1
- package/esm/constants/Settings.js +25 -1
- package/esm/constants/Settings.js.map +1 -1
- package/esm/modularui/Authenticate.js +9 -9
- package/esm/modularui/Authenticate.js.map +1 -1
- package/esm/react-client/client.js +3 -2
- package/esm/react-client/client.js.map +1 -1
- package/esm/react-server/serverUtil.js +2 -1
- package/esm/react-server/serverUtil.js.map +1 -1
- package/esm/redux/actions/Preferences.js +32 -2
- package/esm/redux/actions/Preferences.js.map +1 -1
- package/esm/redux/reducers/PreferencesReducer.js +5 -1
- package/esm/redux/reducers/PreferencesReducer.js.map +1 -1
- package/lib/constants/Constants.js +9 -1
- package/lib/constants/Constants.js.flow +5 -0
- package/lib/constants/Constants.js.map +1 -1
- package/lib/constants/Settings.js +37 -1
- package/lib/constants/Settings.js.flow +25 -1
- package/lib/constants/Settings.js.map +1 -1
- package/lib/modularui/Authenticate.js +10 -10
- package/lib/modularui/Authenticate.js.flow +11 -7
- package/lib/modularui/Authenticate.js.map +1 -1
- package/lib/react-client/client.js +2 -1
- package/lib/react-client/client.js.flow +5 -1
- package/lib/react-client/client.js.map +1 -1
- package/lib/react-server/__tests__/serverUtil.spec.js.flow +18 -0
- 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/Preferences.js +41 -1
- package/lib/redux/actions/Preferences.js.flow +49 -2
- package/lib/redux/actions/Preferences.js.map +1 -1
- package/lib/redux/actions/__tests__/Preferences.spec.js.flow +11 -0
- package/lib/redux/reducers/PreferencesReducer.js +5 -1
- package/lib/redux/reducers/PreferencesReducer.js.flow +8 -1
- package/lib/redux/reducers/PreferencesReducer.js.map +1 -1
- package/lib/redux/reducers/__tests__/PreferencesReducer.spec.js.flow +12 -0
- package/lib/redux/types.js.flow +5 -0
- package/package.json +12 -11
- package/src/constants/Constants.js +5 -0
- package/src/constants/Settings.js +25 -1
- package/src/modularui/Authenticate.js +11 -7
- package/src/react-client/client.js +5 -1
- package/src/react-server/__tests__/serverUtil.spec.js +18 -0
- package/src/react-server/serverUtil.js +2 -0
- package/src/redux/actions/Preferences.js +49 -2
- package/src/redux/actions/__tests__/Preferences.spec.js +11 -0
- package/src/redux/reducers/PreferencesReducer.js +8 -1
- package/src/redux/reducers/__tests__/PreferencesReducer.spec.js +12 -0
- package/src/redux/types.js +5 -0
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.setSettings = exports.setSetting = exports.hasAllContentInData = exports.getSetting = exports.allSettings = void 0;
|
|
8
|
+
exports.setSettings = exports.setSetting = exports.logoutPath = exports.loginUsernameField = exports.loginPath = exports.loginPasswordField = exports.hasAllContentInData = exports.getSetting = exports.allSettings = void 0;
|
|
9
9
|
|
|
10
10
|
var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign"));
|
|
11
11
|
|
|
@@ -111,6 +111,42 @@ exports.allSettings = allSettings;
|
|
|
111
111
|
var hasAllContentInData = function hasAllContentInData() {
|
|
112
112
|
return getSetting(_Constants.ALL_CONTENT_IN_DATA_SETTING, true);
|
|
113
113
|
};
|
|
114
|
+
/**
|
|
115
|
+
*/
|
|
116
|
+
|
|
114
117
|
|
|
115
118
|
exports.hasAllContentInData = hasAllContentInData;
|
|
119
|
+
|
|
120
|
+
var loginPath = function loginPath() {
|
|
121
|
+
return getSetting(_Constants.LOGIN_PATH_SETTING, "".concat(_Constants.BASE, "/j_security_check"));
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
*/
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
exports.loginPath = loginPath;
|
|
128
|
+
|
|
129
|
+
var loginUsernameField = function loginUsernameField() {
|
|
130
|
+
return getSetting(_Constants.LOGIN_USERNAME_SETTING, "j_username");
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
*/
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
exports.loginUsernameField = loginUsernameField;
|
|
137
|
+
|
|
138
|
+
var loginPasswordField = function loginPasswordField() {
|
|
139
|
+
return getSetting(_Constants.LOGIN_PASSWORD_SETTING, "j_password");
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
*/
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
exports.loginPasswordField = loginPasswordField;
|
|
146
|
+
|
|
147
|
+
var logoutPath = function logoutPath() {
|
|
148
|
+
return getSetting(_Constants.LOGOUT_PATH_SETTING, "".concat(_Constants.BASE, "/Logoff"));
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
exports.logoutPath = logoutPath;
|
|
116
152
|
//# sourceMappingURL=Settings.js.map
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
// @flow
|
|
2
2
|
import { isPlainObject, has } from "../utils/helpers/objects";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
BASE,
|
|
5
|
+
ALL_CONTENT_IN_DATA_SETTING,
|
|
6
|
+
LOGIN_PATH_SETTING,
|
|
7
|
+
LOGIN_USERNAME_SETTING,
|
|
8
|
+
LOGIN_PASSWORD_SETTING,
|
|
9
|
+
LOGOUT_PATH_SETTING,
|
|
10
|
+
} from "./Constants";
|
|
4
11
|
|
|
5
12
|
type Setting = boolean | string | number | Array<string>;
|
|
6
13
|
|
|
@@ -115,3 +122,20 @@ export const allSettings = (): { [name: string]: Setting } => settings;
|
|
|
115
122
|
*/
|
|
116
123
|
export const hasAllContentInData = (): boolean =>
|
|
117
124
|
getSetting(ALL_CONTENT_IN_DATA_SETTING, true);
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
*/
|
|
128
|
+
export const loginPath = (): string =>
|
|
129
|
+
getSetting(LOGIN_PATH_SETTING, `${BASE}/j_security_check`);
|
|
130
|
+
/**
|
|
131
|
+
*/
|
|
132
|
+
export const loginUsernameField = (): string =>
|
|
133
|
+
getSetting(LOGIN_USERNAME_SETTING, "j_username");
|
|
134
|
+
/**
|
|
135
|
+
*/
|
|
136
|
+
export const loginPasswordField = (): string =>
|
|
137
|
+
getSetting(LOGIN_PASSWORD_SETTING, "j_password");
|
|
138
|
+
/**
|
|
139
|
+
*/
|
|
140
|
+
export const logoutPath = (): string =>
|
|
141
|
+
getSetting(LOGOUT_PATH_SETTING, `${BASE}/Logoff`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/constants/Settings.js"],"names":["defaultSettings","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_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","settings","setSettings","config","getSetting","key","defaultValue","undefined","Error","setSetting","value","allSettings","hasAllContentInData","ALL_CONTENT_IN_DATA_SETTING"],"mappings":";;;;;;;;;;;AACA;;AACA;;
|
|
1
|
+
{"version":3,"sources":["../../src/constants/Settings.js"],"names":["defaultSettings","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_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","settings","setSettings","config","getSetting","key","defaultValue","undefined","Error","setSetting","value","allSettings","hasAllContentInData","ALL_CONTENT_IN_DATA_SETTING","loginPath","LOGIN_PATH_SETTING","BASE","loginUsernameField","LOGIN_USERNAME_SETTING","loginPasswordField","LOGIN_PASSWORD_SETTING","logoutPath","LOGOUT_PATH_SETTING"],"mappings":"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","sourcesContent":["// @flow\nimport { isPlainObject, has } from \"../utils/helpers/objects\";\nimport {\n BASE,\n ALL_CONTENT_IN_DATA_SETTING,\n LOGIN_PATH_SETTING,\n LOGIN_USERNAME_SETTING,\n LOGIN_PASSWORD_SETTING,\n LOGOUT_PATH_SETTING,\n} from \"./Constants\";\n\ntype Setting = boolean | string | number | Array<string>;\n\nconst defaultSettings = {\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 // 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\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 */\nexport const hasAllContentInData = (): boolean =>\n getSetting(ALL_CONTENT_IN_DATA_SETTING, true);\n\n/**\n */\nexport const loginPath = (): string =>\n getSetting(LOGIN_PATH_SETTING, `${BASE}/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, `${BASE}/Logoff`);\n"],"file":"Settings.js"}
|
|
@@ -25,13 +25,10 @@ var _Cache = _interopRequireDefault(require("../utils/browser/Cache"));
|
|
|
25
25
|
|
|
26
26
|
var _exceptions = require("../exceptions");
|
|
27
27
|
|
|
28
|
-
var
|
|
29
|
-
|
|
30
|
-
var usernameField = "j_username";
|
|
31
|
-
var passwordField = "j_password";
|
|
28
|
+
var _constants = require("../constants");
|
|
29
|
+
|
|
32
30
|
/**
|
|
33
31
|
*/
|
|
34
|
-
|
|
35
32
|
var Authenticate = /*#__PURE__*/function () {
|
|
36
33
|
/**
|
|
37
34
|
*/
|
|
@@ -91,8 +88,11 @@ var Authenticate = /*#__PURE__*/function () {
|
|
|
91
88
|
}, {
|
|
92
89
|
key: "createLogin",
|
|
93
90
|
value: function createLogin(username, password) {
|
|
94
|
-
var _context, _context2;
|
|
91
|
+
var _context, _context2, _context3;
|
|
95
92
|
|
|
93
|
+
var LOGIN_PATH = (0, _constants.loginPath)();
|
|
94
|
+
var usernameField = (0, _constants.loginUsernameField)();
|
|
95
|
+
var passwordField = (0, _constants.loginPasswordField)();
|
|
96
96
|
var encodedUsername = encodeURIComponent(username);
|
|
97
97
|
var encodedPassword = encodeURIComponent(password);
|
|
98
98
|
return {
|
|
@@ -102,7 +102,7 @@ var Authenticate = /*#__PURE__*/function () {
|
|
|
102
102
|
Accept: "application/json",
|
|
103
103
|
"Content-Type": "application/x-www-form-urlencoded"
|
|
104
104
|
},
|
|
105
|
-
data: (0, _concat.default)(_context = (0, _concat.default)(_context2 = "".concat(usernameField, "=").
|
|
105
|
+
data: (0, _concat.default)(_context = (0, _concat.default)(_context2 = (0, _concat.default)(_context3 = "".concat(usernameField, "=")).call(_context3, encodedUsername, "&")).call(_context2, passwordField, "=")).call(_context, encodedPassword)
|
|
106
106
|
};
|
|
107
107
|
}
|
|
108
108
|
/**
|
|
@@ -115,9 +115,9 @@ var Authenticate = /*#__PURE__*/function () {
|
|
|
115
115
|
|
|
116
116
|
return this.initLogin(true).then(function () {
|
|
117
117
|
if (_this2.isBasicAuthentication) {
|
|
118
|
-
var
|
|
118
|
+
var _context4;
|
|
119
119
|
|
|
120
|
-
_Cache.default.addItem("basic", btoa((0, _concat.default)(
|
|
120
|
+
_Cache.default.addItem("basic", btoa((0, _concat.default)(_context4 = "".concat(username, ":")).call(_context4, password)));
|
|
121
121
|
|
|
122
122
|
return _promise.default.resolve();
|
|
123
123
|
}
|
|
@@ -132,7 +132,7 @@ var Authenticate = /*#__PURE__*/function () {
|
|
|
132
132
|
key: "logout",
|
|
133
133
|
value: function logout() {
|
|
134
134
|
return (0, _universalFetch.default)({
|
|
135
|
-
url:
|
|
135
|
+
url: (0, _constants.logoutPath)()
|
|
136
136
|
}).then(function () {
|
|
137
137
|
// clear cache because of cached contributions
|
|
138
138
|
_Cache.default.clear();
|
|
@@ -6,12 +6,12 @@ import Cache from "../utils/browser/Cache";
|
|
|
6
6
|
|
|
7
7
|
import { UnauthorizedException } from "../exceptions";
|
|
8
8
|
import type { RequestOptions } from "../utils/fetch/types";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
import {
|
|
10
|
+
loginPasswordField,
|
|
11
|
+
loginPath,
|
|
12
|
+
loginUsernameField,
|
|
13
|
+
logoutPath,
|
|
14
|
+
} from "../constants";
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
*/
|
|
@@ -65,6 +65,10 @@ class Authenticate {
|
|
|
65
65
|
/**
|
|
66
66
|
*/
|
|
67
67
|
createLogin(username: string, password: string): $Shape<RequestOptions> {
|
|
68
|
+
const LOGIN_PATH = loginPath();
|
|
69
|
+
const usernameField = loginUsernameField();
|
|
70
|
+
const passwordField = loginPasswordField();
|
|
71
|
+
|
|
68
72
|
const encodedUsername = encodeURIComponent(username);
|
|
69
73
|
const encodedPassword = encodeURIComponent(password);
|
|
70
74
|
|
|
@@ -97,7 +101,7 @@ class Authenticate {
|
|
|
97
101
|
*/
|
|
98
102
|
logout(): Promise<void> {
|
|
99
103
|
return universalFetch({
|
|
100
|
-
url:
|
|
104
|
+
url: logoutPath(),
|
|
101
105
|
}).then(() => {
|
|
102
106
|
// clear cache because of cached contributions
|
|
103
107
|
Cache.clear();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/modularui/Authenticate.js"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../src/modularui/Authenticate.js"],"names":["Authenticate","_isBasic","isBasicAuthentication","initLogin","resolve","url","BASE","method","HTTP_METHODS","GET","headers","Accept","catch","error","UnauthorizedException","username","password","LOGIN_PATH","usernameField","passwordField","encodedUsername","encodeURIComponent","encodedPassword","POST","data","then","Cache","addItem","btoa","createLogin","clear"],"mappings":";;;;;;;;;;;;;;;;;;;AACA;;AAEA;;AACA;;AAEA;;AAEA;;AAOA;AACA;IACMA,Y;AAGJ;AACF;AACE,0BAAc;AAAA;AAAA;AACZ,SAAKC,QAAL,GAAgB,KAAhB;AACD;AAED;AACF;;;;;SACE,eAAqC;AACnC,aAAO,KAAKA,QAAZ;AACD;AAED;AACF;;SACE,aAA0BC,qBAA1B,EAA0D;AACxD,WAAKD,QAAL,GAAgBC,qBAAhB;AACD;AAED;AACF;;;;WACE,mBAAUC,UAAV,EAA4C;AAAA;;AAC1C,UAAI,KAAKD,qBAAL,IAA8B,CAACC,UAAnC,EAA8C;AAC5C,eAAO,iBAAQC,OAAR,CAAgB,IAAhB,CAAP;AACD;;AAED,aAAO,6BAAe;AACpBC,QAAAA,GAAG,YAAKC,eAAL,WADiB;AAEpBC,QAAAA,MAAM,EAAEC,wBAAaC,GAFD;AAGpBC,QAAAA,OAAO,EAAE;AACPC,UAAAA,MAAM,EAAE,kBADD;AAEP,0BAAgB;AAFT;AAHW,OAAf,EAOJC,KAPI,CAOE,UAACC,KAAD,EAAW;AAClB;AACA;AACA;AACA,YAAIA,KAAK,YAAYC,iCAArB,EAA4C;AAC1C,UAAA,KAAI,CAACZ,qBAAL,GAA6B,IAA7B;AACD;;AAED,eAAO,iBAAQE,OAAR,CAAgB,EAAhB,CAAP;AACD,OAhBM,CAAP;AAiBD;AAED;AACF;;;;WACE,qBAAYW,QAAZ,EAA8BC,QAA9B,EAAwE;AAAA;;AACtE,UAAMC,UAAU,GAAG,2BAAnB;AACA,UAAMC,aAAa,GAAG,oCAAtB;AACA,UAAMC,aAAa,GAAG,oCAAtB;AAEA,UAAMC,eAAe,GAAGC,kBAAkB,CAACN,QAAD,CAA1C;AACA,UAAMO,eAAe,GAAGD,kBAAkB,CAACL,QAAD,CAA1C;AAEA,aAAO;AACLX,QAAAA,GAAG,EAAEY,UADA;AAELV,QAAAA,MAAM,EAAEC,wBAAae,IAFhB;AAGLb,QAAAA,OAAO,EAAE;AACPC,UAAAA,MAAM,EAAE,kBADD;AAEP,0BAAgB;AAFT,SAHJ;AAOLa,QAAAA,IAAI,8GAAKN,aAAL,wBAAsBE,eAAtB,wBAAyCD,aAAzC,uBAA0DG,eAA1D;AAPC,OAAP;AASD;AAED;AACF;;;;WACE,eAAMP,QAAN,EAAwBC,QAAxB,EAAwD;AAAA;;AACtD,aAAO,KAAKb,SAAL,CAAe,IAAf,EAAqBsB,IAArB,CAA0B,YAAM;AACrC,YAAI,MAAI,CAACvB,qBAAT,EAAgC;AAAA;;AAC9BwB,yBAAMC,OAAN,CAAc,OAAd,EAAuBC,IAAI,4CAAIb,QAAJ,wBAAgBC,QAAhB,EAA3B;;AAEA,iBAAO,iBAAQZ,OAAR,EAAP;AACD;;AAED,eAAO,6BAAe,MAAI,CAACyB,WAAL,CAAiBd,QAAjB,EAA2BC,QAA3B,CAAf,CAAP;AACD,OARM,CAAP;AASD;AAED;AACF;;;;WACE,kBAAwB;AACtB,aAAO,6BAAe;AACpBX,QAAAA,GAAG,EAAE;AADe,OAAf,EAEJoB,IAFI,CAEC,YAAM;AACZ;AACAC,uBAAMI,KAAN;AACD,OALM,CAAP;AAMD;;;;;eAGY9B,Y","sourcesContent":["// @flow\nimport { BASE, HTTP_METHODS } from \"../constants/Constants\";\n\nimport universalFetch from \"../utils/fetch/universalFetch\";\nimport Cache from \"../utils/browser/Cache\";\n\nimport { UnauthorizedException } from \"../exceptions\";\nimport type { RequestOptions } from \"../utils/fetch/types\";\nimport {\n loginPasswordField,\n loginPath,\n loginUsernameField,\n logoutPath,\n} from \"../constants\";\n\n/**\n */\nclass Authenticate {\n _isBasic: boolean;\n\n /**\n */\n constructor() {\n this._isBasic = false;\n }\n\n /**\n */\n get isBasicAuthentication(): boolean {\n return this._isBasic;\n }\n\n /**\n */\n set isBasicAuthentication(isBasicAuthentication: boolean) {\n this._isBasic = isBasicAuthentication;\n }\n\n /**\n */\n initLogin(initLogin: boolean): Promise<any> {\n if (this.isBasicAuthentication || !initLogin) {\n return Promise.resolve(true);\n }\n\n return universalFetch({\n url: `${BASE}/login`,\n method: HTTP_METHODS.GET,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n }).catch((error) => {\n // when an unauthorizedexception is received on a request to the login service,\n // this indicates a basic authorization scenario\n // in case of form based authentication other exceptions are thrown\n if (error instanceof UnauthorizedException) {\n this.isBasicAuthentication = true;\n }\n\n return Promise.resolve({});\n });\n }\n\n /**\n */\n createLogin(username: string, password: string): $Shape<RequestOptions> {\n const LOGIN_PATH = loginPath();\n const usernameField = loginUsernameField();\n const passwordField = loginPasswordField();\n\n const encodedUsername = encodeURIComponent(username);\n const encodedPassword = encodeURIComponent(password);\n\n return {\n url: LOGIN_PATH,\n method: HTTP_METHODS.POST,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n data: `${usernameField}=${encodedUsername}&${passwordField}=${encodedPassword}`,\n };\n }\n\n /**\n */\n login(username: string, password: string): Promise<any> {\n return this.initLogin(true).then(() => {\n if (this.isBasicAuthentication) {\n Cache.addItem(\"basic\", btoa(`${username}:${password}`));\n\n return Promise.resolve();\n }\n\n return universalFetch(this.createLogin(username, password));\n });\n }\n\n /**\n */\n logout(): Promise<void> {\n return universalFetch({\n url: logoutPath(),\n }).then(() => {\n // clear cache because of cached contributions\n Cache.clear();\n });\n }\n}\n\nexport default Authenticate;\n"],"file":"Authenticate.js"}
|
|
@@ -106,7 +106,8 @@ var client = function client() {
|
|
|
106
106
|
history = _configureStore.history,
|
|
107
107
|
store = _configureStore.store;
|
|
108
108
|
|
|
109
|
-
(0, _Preferences.setAllContentInDataSetting)(store.getState());
|
|
109
|
+
(0, _Preferences.setAllContentInDataSetting)(store.getState());
|
|
110
|
+
(0, _Preferences.setLoginPreferences)(store.getState()); // load existing cache from other browser tabs
|
|
110
111
|
|
|
111
112
|
_Cache.default.loadOtherBrowserTabs(function () {
|
|
112
113
|
if (_Cache.default.getItem("auth")) {
|
|
@@ -19,7 +19,10 @@ import configureStore from "../redux/store/configureStore";
|
|
|
19
19
|
import rehydrate from "./rehydrate";
|
|
20
20
|
import { BASE } from "../constants/Constants";
|
|
21
21
|
|
|
22
|
-
import {
|
|
22
|
+
import {
|
|
23
|
+
setAllContentInDataSetting,
|
|
24
|
+
setLoginPreferences,
|
|
25
|
+
} from "../redux/actions/Preferences";
|
|
23
26
|
import { showXHRErrorNotification } from "../redux/actions/Notification";
|
|
24
27
|
|
|
25
28
|
import { handleError } from "../redux/actions/Error";
|
|
@@ -99,6 +102,7 @@ const client = ({
|
|
|
99
102
|
);
|
|
100
103
|
|
|
101
104
|
setAllContentInDataSetting(store.getState());
|
|
105
|
+
setLoginPreferences(store.getState());
|
|
102
106
|
|
|
103
107
|
// load existing cache from other browser tabs
|
|
104
108
|
Cache.loadOtherBrowserTabs(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/react-client/client.js"],"names":["window","parseDataToJSON","data","JSON","parse","error","JsonParseException","client","customReducers","theme","render","beforeRenderHooks","ErrorFallbackComponent","contextPath","Error","dataElement","document","querySelector","textContent","Cache","clear","browserHistory","basename","BASE","history","store","getState","loadOtherBrowserTabs","getItem","dispatch","FetchException","response","listen","location","action","onunhandledrejection","event","detail","errorMessage","reason","message","toString","body","className","addContentLoadedEvent","addEventListener","applicationNode","isSSR","mount","hydrate","reactRender"],"mappings":";;;;;;;;;;;AAEA;;AAIA;;AAEA;;AAEA;;AACA;;AAEA;;AAEA;;AACA;;AAEA;;AACA;;AAEA;;
|
|
1
|
+
{"version":3,"sources":["../../src/react-client/client.js"],"names":["window","parseDataToJSON","data","JSON","parse","error","JsonParseException","client","customReducers","theme","render","beforeRenderHooks","ErrorFallbackComponent","contextPath","Error","dataElement","document","querySelector","textContent","Cache","clear","browserHistory","basename","BASE","history","store","getState","loadOtherBrowserTabs","getItem","dispatch","FetchException","response","listen","location","action","onunhandledrejection","event","detail","errorMessage","reason","message","toString","body","className","addContentLoadedEvent","addEventListener","applicationNode","isSSR","mount","hydrate","reactRender"],"mappings":"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","sourcesContent":["// @flow\n/* polyfills needed for ie11 */\nimport elementClosest from \"element-closest\";\nelementClosest(window);\n\n/* polyfill for focus-visible */\nimport \"focus-visible\";\n\nimport { hydrate, render as reactRender } from \"react-dom\";\n\nimport { has } from \"../utils/helpers/objects\";\nimport setImmediate from \"setimmediate\";\n\nimport Cache from \"../utils/browser/Cache\";\n\nimport { createBrowserHistory } from \"history\";\nimport configureStore from \"../redux/store/configureStore\";\n\nimport rehydrate from \"./rehydrate\";\nimport { BASE } from \"../constants/Constants\";\n\nimport {\n setAllContentInDataSetting,\n setLoginPreferences,\n} from \"../redux/actions/Preferences\";\nimport { showXHRErrorNotification } from \"../redux/actions/Notification\";\n\nimport { handleError } from \"../redux/actions/Error\";\nimport { loginSuccess } from \"../redux/actions/SignIn\";\n\nimport { locationChange } from \"../redux/_router/actions\";\n\nimport { JsonParseException, FetchException } from \"../exceptions\";\n\nimport Init from \"./Init\";\n\nimport { handleBeforeRenderHooks } from \"../redux/store/beforeRenderHooks\";\n\nimport type { ComponentType } from \"react\";\nimport type { Theme } from \"../react-theme/types\";\nimport type { CustomReducers } from \"../redux/types\";\nimport type { RouterHistory } from \"react-router\";\nimport type { BeforeRenderHook } from \"../redux/store/beforeRenderHooks\";\nimport type { Props as FallbackProps } from \"../react/ErrorBoundaryFallback\";\nexport type Props = {\n customReducers?: CustomReducers,\n theme?: Theme | Array<Theme>,\n render: Function,\n beforeRenderHooks?: Array<BeforeRenderHook>,\n ErrorFallbackComponent?: ComponentType<FallbackProps>,\n};\n\n/*\n * deserialize serialized data from the server to provide a smooth dehydration.\n */\n/**\n */\nconst parseDataToJSON = (data) => {\n try {\n return JSON.parse(data);\n } catch (error) {\n throw new JsonParseException(`Error parsing content ${data}`);\n }\n};\n\n/**\n * Mount the webapplication to the DOM, used client side when JavaScript is enabled.\n */\nconst client = ({\n customReducers = {},\n theme = {},\n render,\n beforeRenderHooks,\n ErrorFallbackComponent,\n}: Props = {}) => {\n if (typeof window.contextPath === \"undefined\") {\n throw new Error(\"Missing contextPath on window object\");\n }\n\n const dataElement = document.querySelector(\n 'script[type=\"application/json\"][data-app-state=\"app-json\"]'\n );\n if (!dataElement) {\n throw new Error(\"Error loading state, json not found\");\n } else if (dataElement.textContent.trim() === \"\") {\n return;\n }\n\n const data = parseDataToJSON(dataElement.textContent);\n\n // remove all resources from cache\n Cache.clear(\"^res:\");\n\n // $FlowExpectedError\n const browserHistory: RouterHistory = createBrowserHistory({\n basename: BASE,\n });\n const { history, store } = configureStore(\n browserHistory,\n customReducers,\n rehydrate(data)\n );\n\n setAllContentInDataSetting(store.getState());\n setLoginPreferences(store.getState());\n\n // load existing cache from other browser tabs\n Cache.loadOtherBrowserTabs(() => {\n if (Cache.getItem(\"auth\")) {\n store.dispatch(loginSuccess());\n }\n });\n\n if (has(data, \"error.name\")) {\n const error = new FetchException(data.error.response);\n store.dispatch(handleError(error));\n }\n\n if (Cache.getItem(\"auth\")) {\n store.dispatch(loginSuccess());\n }\n\n // listen to history change and update the redux router store\n history.listen((location, action) => {\n store.dispatch(locationChange(location, action));\n });\n\n /**\n */\n window.onunhandledrejection = (event) => {\n if (event.detail) {\n return setImmediate(() => {\n const errorMessage = event.detail.reason.message.toString();\n\n store.dispatch(showXHRErrorNotification(errorMessage));\n throw event.detail.reason;\n });\n }\n\n return event;\n };\n\n if (document.body) {\n document.body.className = \"js\";\n }\n\n handleBeforeRenderHooks(beforeRenderHooks, { store });\n\n addContentLoadedEvent(store, history, theme, render, ErrorFallbackComponent);\n};\n\n/**\n */\nconst addContentLoadedEvent = (\n store,\n history,\n theme,\n render,\n ErrorFallbackComponent\n) => {\n window.addEventListener(\"DOMContentLoaded\", () => {\n const applicationNode = document.querySelector(\"#application\");\n if (applicationNode) {\n const isSSR = applicationNode.querySelector(\".application\");\n const mount = isSSR ? hydrate : reactRender;\n mount(\n <Init\n store={store}\n history={history}\n contextPath={window.contextPath}\n theme={theme}\n ErrorFallbackComponent={ErrorFallbackComponent}\n >\n {render()}\n </Init>,\n applicationNode\n );\n } else {\n throw new Error(\n \"No DOM element with id application found to attach client to\"\n );\n }\n });\n};\n\nexport default client;\n"],"file":"client.js"}
|
|
@@ -109,6 +109,15 @@ describe("serverUtil", () => {
|
|
|
109
109
|
hasAllContentInData: false,
|
|
110
110
|
},
|
|
111
111
|
},
|
|
112
|
+
{
|
|
113
|
+
type: "SET_PREFERENCES",
|
|
114
|
+
payload: {
|
|
115
|
+
"FormClient.login_url": "/BeInformed/j_security_check",
|
|
116
|
+
"FormClient.logout_url": "/BeInformed/Logoff",
|
|
117
|
+
"FormClient.password_field_name": "j_password",
|
|
118
|
+
"FormClient.username_field_name": "j_username",
|
|
119
|
+
},
|
|
120
|
+
},
|
|
112
121
|
]);
|
|
113
122
|
});
|
|
114
123
|
|
|
@@ -146,6 +155,15 @@ describe("serverUtil", () => {
|
|
|
146
155
|
hasAllContentInData: false,
|
|
147
156
|
},
|
|
148
157
|
},
|
|
158
|
+
{
|
|
159
|
+
type: "SET_PREFERENCES",
|
|
160
|
+
payload: {
|
|
161
|
+
"FormClient.login_url": "/BeInformed/j_security_check",
|
|
162
|
+
"FormClient.logout_url": "/BeInformed/Logoff",
|
|
163
|
+
"FormClient.password_field_name": "j_password",
|
|
164
|
+
"FormClient.username_field_name": "j_username",
|
|
165
|
+
},
|
|
166
|
+
},
|
|
149
167
|
]);
|
|
150
168
|
});
|
|
151
169
|
});
|
|
@@ -165,6 +165,7 @@ var setServerPreferences = function setServerPreferences(store, serverPreference
|
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
store.dispatch((0, _Preferences.setAllContentInDataSetting)());
|
|
168
|
+
store.dispatch((0, _Preferences.setLoginPreferences)());
|
|
168
169
|
|
|
169
170
|
if (preferencesProvider && preferencesProvider.isStudioContext && preferencesProvider.isStudioContext()) {
|
|
170
171
|
store.dispatch((0, _Preferences.setPreference)("isStudioContext", true));
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
setThemePreference,
|
|
17
17
|
setPreference,
|
|
18
18
|
setAllContentInDataSetting,
|
|
19
|
+
setLoginPreferences,
|
|
19
20
|
} from "../redux/actions/Preferences";
|
|
20
21
|
|
|
21
22
|
import { getSetting } from "../constants/Settings";
|
|
@@ -126,6 +127,7 @@ const setServerPreferences = (
|
|
|
126
127
|
}
|
|
127
128
|
|
|
128
129
|
store.dispatch(setAllContentInDataSetting());
|
|
130
|
+
store.dispatch(setLoginPreferences());
|
|
129
131
|
|
|
130
132
|
if (
|
|
131
133
|
preferencesProvider &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/react-server/serverUtil.js"],"names":["createReduxStore","requestHref","customReducers","history","initialEntries","toString","store","setI18n","locales","request","Array","isArray","IllegalArgumentException","mergedLocales","locale","code","customLocale","custLocale","forEach","some","push","enabledLocales","localesInstance","Locales","preferredLocale","dispatch","setServerPreferencesFromArray","serverPreferences","serverPreference","name","defaultValue","type","setServerPreferences","preferencesProvider","isStudioContext","setConfigurationTheme","configTheme","configFileLocation","getLayoutConfigFileLocation","configFilePath","dataFetcher","fetch","Error","handleErrors","state","getState","error","shouldThrowOnServer","dehydrate","filteredState","modularui","reduce","obj","key","status","model","replace","createHead","sheet","UUID","helmetContext","style","getStyleTags","meta","helmet"],"mappings":"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","sourcesContent":["// @flow\nimport { createMemoryHistory } from \"history\";\nimport { has } from \"../utils/helpers/objects\";\nimport deepmerge from \"deepmerge\";\n\nimport configureStore from \"../redux/store/configureStore\";\n\nimport { availableLocales } from \"../i18n/Locales\";\nimport Locales from \"../i18n/Locales\";\n\nimport { getPreferredLocale } from \"./requestInformation\";\nimport { setLocales } from \"../redux/_i18n/actions\";\n\nimport {\n setServerPreference,\n setThemePreference,\n setPreference,\n setAllContentInDataSetting,\n} from \"../redux/actions/Preferences\";\n\nimport { getSetting } from \"../constants/Settings\";\n\nimport { IllegalArgumentException } from \"../exceptions\";\n\nimport type { LocaleConfiguration } from \"../i18n/types\";\nimport type { ReduxStore } from \"../redux/types\";\nimport type Href from \"../models/href/Href\";\nimport type { RouterHistory } from \"react-router\";\n\nexport type PreferenceValue = {\n name: string,\n defaultValue?: string | null,\n type?: string,\n};\n\n/**\n */\nconst createReduxStore = (\n requestHref: Href,\n customReducers: Object\n): ReduxStore => {\n // $FlowExpectedError\n const history: RouterHistory = createMemoryHistory({\n initialEntries: [requestHref.toString()],\n });\n\n const { store } = configureStore(history, customReducers);\n\n return store;\n};\n\n/**\n */\nconst setI18n = (\n store: ReduxStore,\n locales: Array<LocaleConfiguration> = [],\n request: HttpServletRequestJava\n) => {\n if (!Array.isArray(locales)) {\n throw new IllegalArgumentException(\"locales must be an array of objects\");\n }\n if (!request) {\n throw new IllegalArgumentException(\"missing request argument\");\n }\n\n const mergedLocales = availableLocales.map((locale) => {\n const code = locale.code;\n const customLocale = locales.find((custLocale) => custLocale.code === code);\n\n if (customLocale) {\n return deepmerge(locale, customLocale);\n }\n\n return locale;\n });\n\n locales.forEach((customLocale) => {\n if (!mergedLocales.some((locale) => locale.code === customLocale.code)) {\n mergedLocales.push(customLocale);\n }\n });\n\n const enabledLocales = mergedLocales.filter((locale: LocaleConfiguration) =>\n getSetting(\"ENABLED_LOCALES\").includes(locale.code)\n );\n\n const localesInstance = new Locales(enabledLocales);\n const preferredLocale = getPreferredLocale(request, localesInstance);\n store.dispatch(setLocales(localesInstance, preferredLocale ?? \"en\"));\n};\n\nconst setServerPreferencesFromArray = (\n store: ReduxStore,\n serverPreferences: Array<string | PreferenceValue>\n) => {\n serverPreferences.forEach((serverPreference) => {\n if (typeof serverPreference === \"object\") {\n const { name, defaultValue, type } = serverPreference;\n store.dispatch(setServerPreference(name, defaultValue, type));\n } else {\n store.dispatch(setServerPreference(serverPreference, null));\n }\n });\n};\n\n/**\n * Server preferences can be suplied by an array of preference names,\n * or an array of objects which has the name, an optional default value and an optional type.<br>\n * When the type is set to string, a comma separated value is not converted to an array:\n *\n * @example\n * // value becomes an array [default1, default2]\n * { name: \"prefName\", defaultValue: \"default1, default2\" }\n * // value remains a string \"default1, default2\"\n * { name: \"prefName\", defaultValue: \"default1, default2\", type: \"string\" }\n *\n * @param store\n * @param serverPreferences\n */\nconst setServerPreferences = (\n store: ReduxStore,\n serverPreferences: Array<string | PreferenceValue>\n) => {\n if (Array.isArray(serverPreferences)) {\n setServerPreferencesFromArray(store, serverPreferences);\n }\n\n store.dispatch(setAllContentInDataSetting());\n\n if (\n preferencesProvider &&\n preferencesProvider.isStudioContext &&\n preferencesProvider.isStudioContext()\n ) {\n store.dispatch(setPreference(\"isStudioContext\", true));\n }\n};\n\n/**\n */\nconst setConfigurationTheme = (store: ReduxStore) => {\n let configTheme = null;\n\n const configFileLocation = preferencesProvider.getLayoutConfigFileLocation();\n if (typeof configFileLocation === \"string\") {\n const configFilePath = configFileLocation.startsWith(\"/\")\n ? `/resource${configFileLocation}`\n : `/resource/${configFileLocation}`;\n\n configTheme = dataFetcher.fetch(configFilePath);\n\n if (configTheme) {\n store.dispatch(setThemePreference(configTheme));\n } else {\n throw new Error(\n `Could not read theme configuration file from: ${configFilePath}`\n );\n }\n }\n};\n\n/**\n */\nconst handleErrors = (store: ReduxStore) => {\n const state = store.getState();\n\n if (\n state.error &&\n (state.error.shouldThrowOnServer ||\n !has(state.error, \"shouldThrowOnServer\"))\n ) {\n throw state.error;\n }\n};\n\n/**\n */\nconst dehydrate = (store: ReduxStore): string => {\n const state = store.getState();\n\n const filteredState = {\n ...state,\n modularui: Object.keys(state.modularui).reduce((obj, key) => {\n obj[key] = {\n status: state.modularui[key].status,\n model: state.modularui[key].model\n ? state.modularui[key].model.dehydrate()\n : void 0,\n };\n\n return obj;\n }, {}),\n };\n\n return JSON.stringify(filteredState).replace(/</g, \"\\\\u003c\");\n};\n\n/**\n */\nconst createHead = (\n sheet: any,\n UUID: string,\n helmetContext?: Object\n): Object => {\n const style = sheet.getStyleTags();\n const meta = helmetContext ? [...helmetContext.helmet.meta] : [];\n\n if (helmetContext) {\n return {\n ...helmetContext.helmet,\n style,\n meta,\n };\n }\n\n return {\n style,\n meta,\n };\n};\n\nexport {\n createReduxStore,\n setI18n,\n setServerPreferences,\n setConfigurationTheme,\n createHead,\n handleErrors,\n dehydrate,\n};\n"],"file":"serverUtil.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/react-server/serverUtil.js"],"names":["createReduxStore","requestHref","customReducers","history","initialEntries","toString","store","setI18n","locales","request","Array","isArray","IllegalArgumentException","mergedLocales","locale","code","customLocale","custLocale","forEach","some","push","enabledLocales","localesInstance","Locales","preferredLocale","dispatch","setServerPreferencesFromArray","serverPreferences","serverPreference","name","defaultValue","type","setServerPreferences","preferencesProvider","isStudioContext","setConfigurationTheme","configTheme","configFileLocation","getLayoutConfigFileLocation","configFilePath","dataFetcher","fetch","Error","handleErrors","state","getState","error","shouldThrowOnServer","dehydrate","filteredState","modularui","reduce","obj","key","status","model","replace","createHead","sheet","UUID","helmetContext","style","getStyleTags","meta","helmet"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AAEA;;AAEA;;AAGA;;AACA;;AAEA;;AAQA;;AAEA;;;;;;;;;;AAaA;AACA;AACA,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAmB,CACvBC,WADuB,EAEvBC,cAFuB,EAGR;AACf;AACA,MAAMC,OAAsB,GAAG,kCAAoB;AACjDC,IAAAA,cAAc,EAAE,CAACH,WAAW,CAACI,QAAZ,EAAD;AADiC,GAApB,CAA/B;;AAIA,wBAAkB,8BAAeF,OAAf,EAAwBD,cAAxB,CAAlB;AAAA,MAAQI,KAAR,mBAAQA,KAAR;;AAEA,SAAOA,KAAP;AACD,CAZD;AAcA;AACA;;;;;AACA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CACdD,KADc,EAIX;AAAA,MAFHE,OAEG,uEAFmC,EAEnC;AAAA,MADHC,OACG;;AACH,MAAI,CAACC,KAAK,CAACC,OAAN,CAAcH,OAAd,CAAL,EAA6B;AAC3B,UAAM,IAAII,oCAAJ,CAA6B,qCAA7B,CAAN;AACD;;AACD,MAAI,CAACH,OAAL,EAAc;AACZ,UAAM,IAAIG,oCAAJ,CAA6B,0BAA7B,CAAN;AACD;;AAED,MAAMC,aAAa,GAAG,6EAAqB,UAACC,MAAD,EAAY;AACrD,QAAMC,IAAI,GAAGD,MAAM,CAACC,IAApB;AACA,QAAMC,YAAY,GAAG,mBAAAR,OAAO,MAAP,CAAAA,OAAO,EAAM,UAACS,UAAD;AAAA,aAAgBA,UAAU,CAACF,IAAX,KAAoBA,IAApC;AAAA,KAAN,CAA5B;;AAEA,QAAIC,YAAJ,EAAkB;AAChB,aAAO,wBAAUF,MAAV,EAAkBE,YAAlB,CAAP;AACD;;AAED,WAAOF,MAAP;AACD,GATqB,CAAtB;AAWAN,EAAAA,OAAO,CAACU,OAAR,CAAgB,UAACF,YAAD,EAAkB;AAChC,QAAI,CAACH,aAAa,CAACM,IAAd,CAAmB,UAACL,MAAD;AAAA,aAAYA,MAAM,CAACC,IAAP,KAAgBC,YAAY,CAACD,IAAzC;AAAA,KAAnB,CAAL,EAAwE;AACtEF,MAAAA,aAAa,CAACO,IAAd,CAAmBJ,YAAnB;AACD;AACF,GAJD;AAMA,MAAMK,cAAc,GAAG,qBAAAR,aAAa,MAAb,CAAAA,aAAa,EAAQ,UAACC,MAAD;AAAA;;AAAA,WAC1C,4DAAW,iBAAX,kBAAuCA,MAAM,CAACC,IAA9C,CAD0C;AAAA,GAAR,CAApC;AAIA,MAAMO,eAAe,GAAG,IAAIC,gBAAJ,CAAYF,cAAZ,CAAxB;AACA,MAAMG,eAAe,GAAG,4CAAmBf,OAAnB,EAA4Ba,eAA5B,CAAxB;AACAhB,EAAAA,KAAK,CAACmB,QAAN,CAAe,yBAAWH,eAAX,EAA4BE,eAA5B,aAA4BA,eAA5B,cAA4BA,eAA5B,GAA+C,IAA/C,CAAf;AACD,CApCD;;;;AAsCA,IAAME,6BAA6B,GAAG,SAAhCA,6BAAgC,CACpCpB,KADoC,EAEpCqB,iBAFoC,EAGjC;AACHA,EAAAA,iBAAiB,CAACT,OAAlB,CAA0B,UAACU,gBAAD,EAAsB;AAC9C,QAAI,sBAAOA,gBAAP,MAA4B,QAAhC,EAA0C;AACxC,UAAQC,IAAR,GAAqCD,gBAArC,CAAQC,IAAR;AAAA,UAAcC,YAAd,GAAqCF,gBAArC,CAAcE,YAAd;AAAA,UAA4BC,IAA5B,GAAqCH,gBAArC,CAA4BG,IAA5B;AACAzB,MAAAA,KAAK,CAACmB,QAAN,CAAe,sCAAoBI,IAApB,EAA0BC,YAA1B,EAAwCC,IAAxC,CAAf;AACD,KAHD,MAGO;AACLzB,MAAAA,KAAK,CAACmB,QAAN,CAAe,sCAAoBG,gBAApB,EAAsC,IAAtC,CAAf;AACD;AACF,GAPD;AAQD,CAZD;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMI,oBAAoB,GAAG,SAAvBA,oBAAuB,CAC3B1B,KAD2B,EAE3BqB,iBAF2B,EAGxB;AACH,MAAIjB,KAAK,CAACC,OAAN,CAAcgB,iBAAd,CAAJ,EAAsC;AACpCD,IAAAA,6BAA6B,CAACpB,KAAD,EAAQqB,iBAAR,CAA7B;AACD;;AAEDrB,EAAAA,KAAK,CAACmB,QAAN,CAAe,8CAAf;AACAnB,EAAAA,KAAK,CAACmB,QAAN,CAAe,uCAAf;;AAEA,MACEQ,mBAAmB,IACnBA,mBAAmB,CAACC,eADpB,IAEAD,mBAAmB,CAACC,eAApB,EAHF,EAIE;AACA5B,IAAAA,KAAK,CAACmB,QAAN,CAAe,gCAAc,iBAAd,EAAiC,IAAjC,CAAf;AACD;AACF,CAlBD;AAoBA;AACA;;;;;AACA,IAAMU,qBAAqB,GAAG,SAAxBA,qBAAwB,CAAC7B,KAAD,EAAuB;AACnD,MAAI8B,WAAW,GAAG,IAAlB;AAEA,MAAMC,kBAAkB,GAAGJ,mBAAmB,CAACK,2BAApB,EAA3B;;AACA,MAAI,OAAOD,kBAAP,KAA8B,QAAlC,EAA4C;AAC1C,QAAME,cAAc,GAAG,yBAAAF,kBAAkB,MAAlB,CAAAA,kBAAkB,EAAY,GAAZ,CAAlB,sBACPA,kBADO,wBAENA,kBAFM,CAAvB;AAIAD,IAAAA,WAAW,GAAGI,WAAW,CAACC,KAAZ,CAAkBF,cAAlB,CAAd;;AAEA,QAAIH,WAAJ,EAAiB;AACf9B,MAAAA,KAAK,CAACmB,QAAN,CAAe,qCAAmBW,WAAnB,CAAf;AACD,KAFD,MAEO;AACL,YAAM,IAAIM,KAAJ,yDAC6CH,cAD7C,EAAN;AAGD;AACF;AACF,CAnBD;AAqBA;AACA;;;;;AACA,IAAMI,YAAY,GAAG,SAAfA,YAAe,CAACrC,KAAD,EAAuB;AAC1C,MAAMsC,KAAK,GAAGtC,KAAK,CAACuC,QAAN,EAAd;;AAEA,MACED,KAAK,CAACE,KAAN,KACCF,KAAK,CAACE,KAAN,CAAYC,mBAAZ,IACC,CAAC,kBAAIH,KAAK,CAACE,KAAV,EAAiB,qBAAjB,CAFH,CADF,EAIE;AACA,UAAMF,KAAK,CAACE,KAAZ;AACD;AACF,CAVD;AAYA;AACA;;;;;AACA,IAAME,SAAS,GAAG,SAAZA,SAAY,CAAC1C,KAAD,EAA+B;AAC/C,MAAMsC,KAAK,GAAGtC,KAAK,CAACuC,QAAN,EAAd;;AAEA,MAAMI,aAAa,mCACdL,KADc;AAEjBM,IAAAA,SAAS,EAAE,mBAAYN,KAAK,CAACM,SAAlB,EAA6BC,MAA7B,CAAoC,UAACC,GAAD,EAAMC,GAAN,EAAc;AAC3DD,MAAAA,GAAG,CAACC,GAAD,CAAH,GAAW;AACTC,QAAAA,MAAM,EAAEV,KAAK,CAACM,SAAN,CAAgBG,GAAhB,EAAqBC,MADpB;AAETC,QAAAA,KAAK,EAAEX,KAAK,CAACM,SAAN,CAAgBG,GAAhB,EAAqBE,KAArB,GACHX,KAAK,CAACM,SAAN,CAAgBG,GAAhB,EAAqBE,KAArB,CAA2BP,SAA3B,EADG,GAEH,KAAK;AAJA,OAAX;AAOA,aAAOI,GAAP;AACD,KATU,EASR,EATQ;AAFM,IAAnB;;AAcA,SAAO,wBAAeH,aAAf,EAA8BO,OAA9B,CAAsC,IAAtC,EAA4C,SAA5C,CAAP;AACD,CAlBD;AAoBA;AACA;;;;;AACA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CACjBC,KADiB,EAEjBC,IAFiB,EAGjBC,aAHiB,EAIN;AACX,MAAMC,KAAK,GAAGH,KAAK,CAACI,YAAN,EAAd;AACA,MAAMC,IAAI,GAAGH,aAAa,oCAAOA,aAAa,CAACI,MAAd,CAAqBD,IAA5B,IAAoC,EAA9D;;AAEA,MAAIH,aAAJ,EAAmB;AACjB,2CACKA,aAAa,CAACI,MADnB;AAEEH,MAAAA,KAAK,EAALA,KAFF;AAGEE,MAAAA,IAAI,EAAJA;AAHF;AAKD;;AAED,SAAO;AACLF,IAAAA,KAAK,EAALA,KADK;AAELE,IAAAA,IAAI,EAAJA;AAFK,GAAP;AAID,CApBD","sourcesContent":["// @flow\nimport { createMemoryHistory } from \"history\";\nimport { has } from \"../utils/helpers/objects\";\nimport deepmerge from \"deepmerge\";\n\nimport configureStore from \"../redux/store/configureStore\";\n\nimport { availableLocales } from \"../i18n/Locales\";\nimport Locales from \"../i18n/Locales\";\n\nimport { getPreferredLocale } from \"./requestInformation\";\nimport { setLocales } from \"../redux/_i18n/actions\";\n\nimport {\n setServerPreference,\n setThemePreference,\n setPreference,\n setAllContentInDataSetting,\n setLoginPreferences,\n} from \"../redux/actions/Preferences\";\n\nimport { getSetting } from \"../constants/Settings\";\n\nimport { IllegalArgumentException } from \"../exceptions\";\n\nimport type { LocaleConfiguration } from \"../i18n/types\";\nimport type { ReduxStore } from \"../redux/types\";\nimport type Href from \"../models/href/Href\";\nimport type { RouterHistory } from \"react-router\";\n\nexport type PreferenceValue = {\n name: string,\n defaultValue?: string | null,\n type?: string,\n};\n\n/**\n */\nconst createReduxStore = (\n requestHref: Href,\n customReducers: Object\n): ReduxStore => {\n // $FlowExpectedError\n const history: RouterHistory = createMemoryHistory({\n initialEntries: [requestHref.toString()],\n });\n\n const { store } = configureStore(history, customReducers);\n\n return store;\n};\n\n/**\n */\nconst setI18n = (\n store: ReduxStore,\n locales: Array<LocaleConfiguration> = [],\n request: HttpServletRequestJava\n) => {\n if (!Array.isArray(locales)) {\n throw new IllegalArgumentException(\"locales must be an array of objects\");\n }\n if (!request) {\n throw new IllegalArgumentException(\"missing request argument\");\n }\n\n const mergedLocales = availableLocales.map((locale) => {\n const code = locale.code;\n const customLocale = locales.find((custLocale) => custLocale.code === code);\n\n if (customLocale) {\n return deepmerge(locale, customLocale);\n }\n\n return locale;\n });\n\n locales.forEach((customLocale) => {\n if (!mergedLocales.some((locale) => locale.code === customLocale.code)) {\n mergedLocales.push(customLocale);\n }\n });\n\n const enabledLocales = mergedLocales.filter((locale: LocaleConfiguration) =>\n getSetting(\"ENABLED_LOCALES\").includes(locale.code)\n );\n\n const localesInstance = new Locales(enabledLocales);\n const preferredLocale = getPreferredLocale(request, localesInstance);\n store.dispatch(setLocales(localesInstance, preferredLocale ?? \"en\"));\n};\n\nconst setServerPreferencesFromArray = (\n store: ReduxStore,\n serverPreferences: Array<string | PreferenceValue>\n) => {\n serverPreferences.forEach((serverPreference) => {\n if (typeof serverPreference === \"object\") {\n const { name, defaultValue, type } = serverPreference;\n store.dispatch(setServerPreference(name, defaultValue, type));\n } else {\n store.dispatch(setServerPreference(serverPreference, null));\n }\n });\n};\n\n/**\n * Server preferences can be suplied by an array of preference names,\n * or an array of objects which has the name, an optional default value and an optional type.<br>\n * When the type is set to string, a comma separated value is not converted to an array:\n *\n * @example\n * // value becomes an array [default1, default2]\n * { name: \"prefName\", defaultValue: \"default1, default2\" }\n * // value remains a string \"default1, default2\"\n * { name: \"prefName\", defaultValue: \"default1, default2\", type: \"string\" }\n *\n * @param store\n * @param serverPreferences\n */\nconst setServerPreferences = (\n store: ReduxStore,\n serverPreferences: Array<string | PreferenceValue>\n) => {\n if (Array.isArray(serverPreferences)) {\n setServerPreferencesFromArray(store, serverPreferences);\n }\n\n store.dispatch(setAllContentInDataSetting());\n store.dispatch(setLoginPreferences());\n\n if (\n preferencesProvider &&\n preferencesProvider.isStudioContext &&\n preferencesProvider.isStudioContext()\n ) {\n store.dispatch(setPreference(\"isStudioContext\", true));\n }\n};\n\n/**\n */\nconst setConfigurationTheme = (store: ReduxStore) => {\n let configTheme = null;\n\n const configFileLocation = preferencesProvider.getLayoutConfigFileLocation();\n if (typeof configFileLocation === \"string\") {\n const configFilePath = configFileLocation.startsWith(\"/\")\n ? `/resource${configFileLocation}`\n : `/resource/${configFileLocation}`;\n\n configTheme = dataFetcher.fetch(configFilePath);\n\n if (configTheme) {\n store.dispatch(setThemePreference(configTheme));\n } else {\n throw new Error(\n `Could not read theme configuration file from: ${configFilePath}`\n );\n }\n }\n};\n\n/**\n */\nconst handleErrors = (store: ReduxStore) => {\n const state = store.getState();\n\n if (\n state.error &&\n (state.error.shouldThrowOnServer ||\n !has(state.error, \"shouldThrowOnServer\"))\n ) {\n throw state.error;\n }\n};\n\n/**\n */\nconst dehydrate = (store: ReduxStore): string => {\n const state = store.getState();\n\n const filteredState = {\n ...state,\n modularui: Object.keys(state.modularui).reduce((obj, key) => {\n obj[key] = {\n status: state.modularui[key].status,\n model: state.modularui[key].model\n ? state.modularui[key].model.dehydrate()\n : void 0,\n };\n\n return obj;\n }, {}),\n };\n\n return JSON.stringify(filteredState).replace(/</g, \"\\\\u003c\");\n};\n\n/**\n */\nconst createHead = (\n sheet: any,\n UUID: string,\n helmetContext?: Object\n): Object => {\n const style = sheet.getStyleTags();\n const meta = helmetContext ? [...helmetContext.helmet.meta] : [];\n\n if (helmetContext) {\n return {\n ...helmetContext.helmet,\n style,\n meta,\n };\n }\n\n return {\n style,\n meta,\n };\n};\n\nexport {\n createReduxStore,\n setI18n,\n setServerPreferences,\n setConfigurationTheme,\n createHead,\n handleErrors,\n dehydrate,\n};\n"],"file":"serverUtil.js"}
|
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
|
4
|
+
|
|
5
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
|
6
|
+
|
|
7
|
+
var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
|
8
|
+
|
|
9
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
|
10
|
+
|
|
11
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
|
12
|
+
|
|
3
13
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
14
|
|
|
5
15
|
Object.defineProperty(exports, "__esModule", {
|
|
6
16
|
value: true
|
|
7
17
|
});
|
|
8
|
-
exports.setThemePreference = exports.setServerPreference = exports.setPreference = exports.setAllContentInDataSetting = void 0;
|
|
18
|
+
exports.setThemePreference = exports.setServerPreference = exports.setPreferences = exports.setPreference = exports.setLoginPreferences = exports.setAllContentInDataSetting = void 0;
|
|
9
19
|
|
|
10
20
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
11
21
|
|
|
@@ -23,6 +33,10 @@ var _Settings = require("../../constants/Settings");
|
|
|
23
33
|
|
|
24
34
|
var _constants = require("../../constants");
|
|
25
35
|
|
|
36
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
37
|
+
|
|
38
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? Object.defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
39
|
+
|
|
26
40
|
/**
|
|
27
41
|
*/
|
|
28
42
|
var getServerPreferenceValue = function getServerPreferenceValue(preferenceName) {
|
|
@@ -77,6 +91,18 @@ var setPreference = function setPreference(propertyName) {
|
|
|
77
91
|
|
|
78
92
|
exports.setPreference = setPreference;
|
|
79
93
|
|
|
94
|
+
var setPreferences = function setPreferences(preferences) {
|
|
95
|
+
return {
|
|
96
|
+
type: "SET_PREFERENCES",
|
|
97
|
+
payload: _objectSpread({}, preferences)
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
*/
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
exports.setPreferences = setPreferences;
|
|
105
|
+
|
|
80
106
|
var setThemePreference = function setThemePreference(configTheme) {
|
|
81
107
|
var themeData = {};
|
|
82
108
|
|
|
@@ -111,6 +137,20 @@ var setAllContentInDataSetting = function setAllContentInDataSetting(state) {
|
|
|
111
137
|
(0, _Settings.setSetting)(_constants.ALL_CONTENT_IN_DATA_SETTING, !!allContentInDataSetting);
|
|
112
138
|
return setPreference(_constants.ALL_CONTENT_IN_DATA_SETTING, allContentInDataSetting);
|
|
113
139
|
};
|
|
140
|
+
/**
|
|
141
|
+
* Retrieves login settings from runtime preferences and sets them as setting in the preference reducer
|
|
142
|
+
*/
|
|
143
|
+
|
|
114
144
|
|
|
115
145
|
exports.setAllContentInDataSetting = setAllContentInDataSetting;
|
|
146
|
+
|
|
147
|
+
var setLoginPreferences = function setLoginPreferences(state) {
|
|
148
|
+
var _state$preferences$LO, _state$preferences$LO2, _state$preferences$LO3, _state$preferences$LO4, _loginSettings;
|
|
149
|
+
|
|
150
|
+
var loginSettings = (_loginSettings = {}, (0, _defineProperty2.default)(_loginSettings, _constants.LOGIN_PATH_SETTING, getServerPreferenceValue(_constants.LOGIN_PATH_SETTING, (_state$preferences$LO = state === null || state === void 0 ? void 0 : state.preferences[_constants.LOGIN_PATH_SETTING]) !== null && _state$preferences$LO !== void 0 ? _state$preferences$LO : "".concat(_constants.BASE, "/j_security_check"))), (0, _defineProperty2.default)(_loginSettings, _constants.LOGIN_USERNAME_SETTING, getServerPreferenceValue(_constants.LOGIN_USERNAME_SETTING, (_state$preferences$LO2 = state === null || state === void 0 ? void 0 : state.preferences[_constants.LOGIN_USERNAME_SETTING]) !== null && _state$preferences$LO2 !== void 0 ? _state$preferences$LO2 : "j_username")), (0, _defineProperty2.default)(_loginSettings, _constants.LOGIN_PASSWORD_SETTING, getServerPreferenceValue(_constants.LOGIN_PASSWORD_SETTING, (_state$preferences$LO3 = state === null || state === void 0 ? void 0 : state.preferences[_constants.LOGIN_PASSWORD_SETTING]) !== null && _state$preferences$LO3 !== void 0 ? _state$preferences$LO3 : "j_password")), (0, _defineProperty2.default)(_loginSettings, _constants.LOGOUT_PATH_SETTING, getServerPreferenceValue(_constants.LOGOUT_PATH_SETTING, (_state$preferences$LO4 = state === null || state === void 0 ? void 0 : state.preferences[_constants.LOGOUT_PATH_SETTING]) !== null && _state$preferences$LO4 !== void 0 ? _state$preferences$LO4 : "".concat(_constants.BASE, "/Logoff"))), _loginSettings);
|
|
151
|
+
(0, _Settings.setSettings)(loginSettings);
|
|
152
|
+
return setPreferences(loginSettings);
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
exports.setLoginPreferences = setLoginPreferences;
|
|
116
156
|
//# sourceMappingURL=Preferences.js.map
|
|
@@ -2,14 +2,23 @@
|
|
|
2
2
|
import { isPlainObject } from "../../utils/helpers/objects";
|
|
3
3
|
|
|
4
4
|
import { JsonParseException } from "../../exceptions";
|
|
5
|
-
import {
|
|
5
|
+
import { setSetting, setSettings } from "../../constants/Settings";
|
|
6
6
|
|
|
7
7
|
import type {
|
|
8
8
|
PreferenceValue,
|
|
9
9
|
ReduxState,
|
|
10
10
|
SetPreferenceAction,
|
|
11
|
+
SetPreferencesAction,
|
|
11
12
|
} from "../types";
|
|
12
|
-
|
|
13
|
+
|
|
14
|
+
import {
|
|
15
|
+
BASE,
|
|
16
|
+
ALL_CONTENT_IN_DATA_SETTING,
|
|
17
|
+
LOGIN_PASSWORD_SETTING,
|
|
18
|
+
LOGIN_PATH_SETTING,
|
|
19
|
+
LOGIN_USERNAME_SETTING,
|
|
20
|
+
LOGOUT_PATH_SETTING,
|
|
21
|
+
} from "../../constants";
|
|
13
22
|
|
|
14
23
|
/**
|
|
15
24
|
*/
|
|
@@ -57,6 +66,15 @@ export const setPreference = (
|
|
|
57
66
|
},
|
|
58
67
|
});
|
|
59
68
|
|
|
69
|
+
/**
|
|
70
|
+
*/
|
|
71
|
+
export const setPreferences = (preferences: Object): SetPreferencesAction => ({
|
|
72
|
+
type: "SET_PREFERENCES",
|
|
73
|
+
payload: {
|
|
74
|
+
...preferences,
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
|
|
60
78
|
/**
|
|
61
79
|
*/
|
|
62
80
|
export const setThemePreference = (
|
|
@@ -97,3 +115,32 @@ export const setAllContentInDataSetting = (
|
|
|
97
115
|
setSetting(ALL_CONTENT_IN_DATA_SETTING, !!allContentInDataSetting);
|
|
98
116
|
return setPreference(ALL_CONTENT_IN_DATA_SETTING, allContentInDataSetting);
|
|
99
117
|
};
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Retrieves login settings from runtime preferences and sets them as setting in the preference reducer
|
|
121
|
+
*/
|
|
122
|
+
export const setLoginPreferences = (
|
|
123
|
+
state?: ReduxState
|
|
124
|
+
): SetPreferencesAction => {
|
|
125
|
+
const loginSettings = {
|
|
126
|
+
[LOGIN_PATH_SETTING]: getServerPreferenceValue(
|
|
127
|
+
LOGIN_PATH_SETTING,
|
|
128
|
+
state?.preferences[LOGIN_PATH_SETTING] ?? `${BASE}/j_security_check`
|
|
129
|
+
),
|
|
130
|
+
[LOGIN_USERNAME_SETTING]: getServerPreferenceValue(
|
|
131
|
+
LOGIN_USERNAME_SETTING,
|
|
132
|
+
state?.preferences[LOGIN_USERNAME_SETTING] ?? "j_username"
|
|
133
|
+
),
|
|
134
|
+
[LOGIN_PASSWORD_SETTING]: getServerPreferenceValue(
|
|
135
|
+
LOGIN_PASSWORD_SETTING,
|
|
136
|
+
state?.preferences[LOGIN_PASSWORD_SETTING] ?? "j_password"
|
|
137
|
+
),
|
|
138
|
+
[LOGOUT_PATH_SETTING]: getServerPreferenceValue(
|
|
139
|
+
LOGOUT_PATH_SETTING,
|
|
140
|
+
state?.preferences[LOGOUT_PATH_SETTING] ?? `${BASE}/Logoff`
|
|
141
|
+
),
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
setSettings(loginSettings);
|
|
145
|
+
return setPreferences(loginSettings);
|
|
146
|
+
};
|