@beinformed/ui 1.63.9 → 1.63.10

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 CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [1.63.10](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.63.9...v1.63.10) (2025-11-25)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **logout:** use absolute post logout redirect url ([4ddfee8](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/4ddfee88748ea97944c74b4d006638e71db89af1))
11
+
5
12
  ## [1.63.9](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.63.7...v1.63.9) (2025-11-24)
6
13
 
7
14
 
@@ -2,7 +2,7 @@ import { useSelector, useDispatch } from "react-redux";
2
2
  import { getApplication } from "../redux/_modularui/ModularUISelectors";
3
3
  import { login, logout, resetAuthErrors } from "../redux/actions";
4
4
  import Cache from "../utils/browser/Cache";
5
- import { DEFAULT_AUTHENTICATION_TYPE, getBasePathServer, INTERNAL_LOGIN_TYPE, logoutPath } from "../constants";
5
+ import { DEFAULT_AUTHENTICATION_TYPE, getBasePath, getBasePathServer, INTERNAL_LOGIN_TYPE } from "../constants";
6
6
  import { IllegalStateException } from "../exceptions";
7
7
  import { Authenticate } from "../modularui";
8
8
  /**
@@ -37,8 +37,7 @@ export const useLogin = () => {
37
37
  export const useLogout = () => {
38
38
  const dispatch = useDispatch();
39
39
  const application = useSelector(getApplication);
40
- const LOGOUT_PATH = logoutPath();
41
- const BASE_PATH = getBasePathServer();
40
+ const BASE_PATH = getBasePath();
42
41
  const authenticate = new Authenticate();
43
42
  const isAuthenticated = application?.isLoggedIn ?? false;
44
43
  return {
@@ -50,7 +49,7 @@ export const useLogout = () => {
50
49
  authenticate.redirectToLogout();
51
50
  } else if (Cache.getItem("isRedirectLogin")) {
52
51
  const origin = window.location.origin;
53
- const url = `${origin}${BASE_PATH}/logout?url=${origin}${BASE_PATH}${LOGOUT_PATH}`;
52
+ const url = `${authenticate.getLogoutUrl()}?url=${origin}${BASE_PATH}`;
54
53
  Cache.setItem("isRedirectLogin", false);
55
54
  window.location.assign(url);
56
55
  } else {
@@ -7,9 +7,9 @@ import { login, logout, resetAuthErrors } from "../redux/actions";
7
7
  import Cache from "../utils/browser/Cache";
8
8
  import {
9
9
  DEFAULT_AUTHENTICATION_TYPE,
10
+ getBasePath,
10
11
  getBasePathServer,
11
12
  INTERNAL_LOGIN_TYPE,
12
- logoutPath,
13
13
  } from "../constants";
14
14
  import { IllegalStateException } from "../exceptions";
15
15
  import { Authenticate } from "../modularui";
@@ -79,8 +79,7 @@ export const useLogout = (): LogoutHook => {
79
79
  const dispatch = useDispatch();
80
80
  const application = useSelector(getApplication);
81
81
 
82
- const LOGOUT_PATH = logoutPath();
83
- const BASE_PATH = getBasePathServer();
82
+ const BASE_PATH = getBasePath();
84
83
 
85
84
  const authenticate = new Authenticate();
86
85
 
@@ -96,7 +95,7 @@ export const useLogout = (): LogoutHook => {
96
95
  authenticate.redirectToLogout();
97
96
  } else if (Cache.getItem("isRedirectLogin")) {
98
97
  const origin = window.location.origin;
99
- const url = `${origin}${BASE_PATH}/logout?url=${origin}${BASE_PATH}${LOGOUT_PATH}`;
98
+ const url = `${authenticate.getLogoutUrl()}?url=${origin}${BASE_PATH}`;
100
99
  Cache.setItem("isRedirectLogin", false);
101
100
  window.location.assign(url);
102
101
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"useAuthentication.js","names":["useSelector","useDispatch","getApplication","login","logout","resetAuthErrors","Cache","DEFAULT_AUTHENTICATION_TYPE","getBasePathServer","INTERNAL_LOGIN_TYPE","logoutPath","IllegalStateException","Authenticate","useLogin","setItem","dispatch","application","auth","state","isAuthenticated","isLoggedIn","authenticationTypes","errorMessage","error","resetErrors","username","password","redirectLogin","authenticationType","getItem","authentication","redirectUri","window","location","assign","useLogout","LOGOUT_PATH","BASE_PATH","authenticate","type","PAC4J_INDIRECT","redirectToLogout","origin","url","logoutUrl","getLogoutUrl"],"sources":["../../src/hooks/useAuthentication.js"],"sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\n\nimport { getApplication } from \"../redux/_modularui/ModularUISelectors\";\nimport { login, logout, resetAuthErrors } from \"../redux/actions\";\n\nimport Cache from \"../utils/browser/Cache\";\nimport {\n DEFAULT_AUTHENTICATION_TYPE,\n getBasePathServer,\n INTERNAL_LOGIN_TYPE,\n logoutPath,\n} from \"../constants\";\nimport { IllegalStateException } from \"../exceptions\";\nimport { Authenticate } from \"../modularui\";\n\nimport type { ResetAuthErrorsAction } from \"../redux/types\";\nimport type { AuthenticationType } from \"../models/types\";\n\ntype LoginHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n errorMessage: ?string,\n resetErrors: () => ResetAuthErrorsAction,\n login: (username: string, password: string) => void,\n redirectLogin: (authenticationType: AuthenticationType) => void,\n};\ntype LogoutHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n logout: () => void,\n logoutUrl: string,\n};\n\n/**\n */\nexport const useLogin = (): LoginHook => {\n Cache.setItem(\"isRedirectLogin\", false);\n\n const dispatch = useDispatch();\n\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth);\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [\n DEFAULT_AUTHENTICATION_TYPE,\n ],\n errorMessage: auth.error,\n resetErrors: () => dispatch(resetAuthErrors()),\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n redirectLogin: (authenticationType: AuthenticationType) => {\n if (Cache.getItem(\"isRedirectLogin\")) {\n // prevent endless loop in redirects when authentication type can't be redirected\n throw new IllegalStateException(\n `Could not redirect to '${\n authenticationType.authentication\n }' using url: '${authenticationType.redirectUri ?? \"\"}'`,\n );\n }\n\n if (!isAuthenticated) {\n Cache.setItem(\"isRedirectLogin\", true);\n window.location.assign(\n `${getBasePathServer()}${authenticationType.redirectUri ?? \"\"}`,\n );\n }\n },\n };\n};\n\n/**\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n const application = useSelector(getApplication);\n\n const LOGOUT_PATH = logoutPath();\n const BASE_PATH = getBasePathServer();\n\n const authenticate = new Authenticate();\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [\n DEFAULT_AUTHENTICATION_TYPE,\n ],\n logout: () => {\n const type = authenticate.authenticationType;\n if (type === INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT) {\n authenticate.redirectToLogout();\n } else if (Cache.getItem(\"isRedirectLogin\")) {\n const origin = window.location.origin;\n const url = `${origin}${BASE_PATH}/logout?url=${origin}${BASE_PATH}${LOGOUT_PATH}`;\n Cache.setItem(\"isRedirectLogin\", false);\n window.location.assign(url);\n } else {\n return dispatch(logout());\n }\n },\n logoutUrl: authenticate.getLogoutUrl(),\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useAuthentication.js","names":["useSelector","useDispatch","getApplication","login","logout","resetAuthErrors","Cache","DEFAULT_AUTHENTICATION_TYPE","getBasePath","getBasePathServer","INTERNAL_LOGIN_TYPE","IllegalStateException","Authenticate","useLogin","setItem","dispatch","application","auth","state","isAuthenticated","isLoggedIn","authenticationTypes","errorMessage","error","resetErrors","username","password","redirectLogin","authenticationType","getItem","authentication","redirectUri","window","location","assign","useLogout","BASE_PATH","authenticate","type","PAC4J_INDIRECT","redirectToLogout","origin","url","getLogoutUrl","logoutUrl"],"sources":["../../src/hooks/useAuthentication.js"],"sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\n\nimport { getApplication } from \"../redux/_modularui/ModularUISelectors\";\nimport { login, logout, resetAuthErrors } from \"../redux/actions\";\n\nimport Cache from \"../utils/browser/Cache\";\nimport {\n DEFAULT_AUTHENTICATION_TYPE,\n getBasePath,\n getBasePathServer,\n INTERNAL_LOGIN_TYPE,\n} from \"../constants\";\nimport { IllegalStateException } from \"../exceptions\";\nimport { Authenticate } from \"../modularui\";\n\nimport type { ResetAuthErrorsAction } from \"../redux/types\";\nimport type { AuthenticationType } from \"../models/types\";\n\ntype LoginHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n errorMessage: ?string,\n resetErrors: () => ResetAuthErrorsAction,\n login: (username: string, password: string) => void,\n redirectLogin: (authenticationType: AuthenticationType) => void,\n};\ntype LogoutHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n logout: () => void,\n logoutUrl: string,\n};\n\n/**\n */\nexport const useLogin = (): LoginHook => {\n Cache.setItem(\"isRedirectLogin\", false);\n\n const dispatch = useDispatch();\n\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth);\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [\n DEFAULT_AUTHENTICATION_TYPE,\n ],\n errorMessage: auth.error,\n resetErrors: () => dispatch(resetAuthErrors()),\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n redirectLogin: (authenticationType: AuthenticationType) => {\n if (Cache.getItem(\"isRedirectLogin\")) {\n // prevent endless loop in redirects when authentication type can't be redirected\n throw new IllegalStateException(\n `Could not redirect to '${\n authenticationType.authentication\n }' using url: '${authenticationType.redirectUri ?? \"\"}'`,\n );\n }\n\n if (!isAuthenticated) {\n Cache.setItem(\"isRedirectLogin\", true);\n window.location.assign(\n `${getBasePathServer()}${authenticationType.redirectUri ?? \"\"}`,\n );\n }\n },\n };\n};\n\n/**\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n const application = useSelector(getApplication);\n\n const BASE_PATH = getBasePath();\n\n const authenticate = new Authenticate();\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [\n DEFAULT_AUTHENTICATION_TYPE,\n ],\n logout: () => {\n const type = authenticate.authenticationType;\n if (type === INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT) {\n authenticate.redirectToLogout();\n } else if (Cache.getItem(\"isRedirectLogin\")) {\n const origin = window.location.origin;\n const url = `${authenticate.getLogoutUrl()}?url=${origin}${BASE_PATH}`;\n Cache.setItem(\"isRedirectLogin\", false);\n window.location.assign(url);\n } else {\n return dispatch(logout());\n }\n },\n logoutUrl: authenticate.getLogoutUrl(),\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
2
2
  import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
3
3
  import _Promise from "@babel/runtime-corejs3/core-js-stable/promise";
4
+ import _startsWithInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/starts-with";
4
5
  import { HTTP_METHODS } from "../constants/Constants";
5
6
  import universalFetch from "../utils/fetch/universalFetch";
6
7
  import Cache from "../utils/browser/Cache";
@@ -170,9 +171,11 @@ class Authenticate {
170
171
  /**
171
172
  * Browser redirect to the logout url. (no xmlhttp)
172
173
  */
173
- redirectToLogout(postRedirectUrl) {
174
+ redirectToLogout(postRedirectUrl = "") {
175
+ var _context;
174
176
  Cache.clear();
175
- const redirectUrl = postRedirectUrl || getBasePath();
177
+ const origin = window.location.origin;
178
+ const redirectUrl = ((_context = postRedirectUrl) == null ? void 0 : Function.call.bind(_startsWithInstanceProperty(_context), _context))?.("http") ? postRedirectUrl : `${origin}${getBasePath()}`;
176
179
  window.location.assign(this.getLogoutUrl() + "?url=" + redirectUrl);
177
180
  }
178
181
 
@@ -189,10 +189,13 @@ class Authenticate {
189
189
  /**
190
190
  * Browser redirect to the logout url. (no xmlhttp)
191
191
  */
192
- redirectToLogout(postRedirectUrl?: string): void {
192
+ redirectToLogout(postRedirectUrl: string = ""): void {
193
193
  Cache.clear();
194
194
 
195
- const redirectUrl = postRedirectUrl || getBasePath();
195
+ const origin = window.location.origin;
196
+ const redirectUrl = postRedirectUrl?.startsWith("http")
197
+ ? postRedirectUrl
198
+ : `${origin}${getBasePath()}`;
196
199
 
197
200
  window.location.assign(this.getLogoutUrl() + "?url=" + redirectUrl);
198
201
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Authenticate.js","names":["HTTP_METHODS","universalFetch","Cache","UnauthorizedException","INTERNAL_LOGIN_TYPE","loginType","loginPath","loginPasswordField","loginUsernameField","logoutPath","getBasePath","Authenticate","constructor","_defineProperty","_isBasic","authenticationType","type","JAAS","_includesInstanceProperty","call","PAC4J_FORM","PAC4J_BASIC","PAC4J_INDIRECT","isBasicAuthentication","requestLogin","url","method","GET","headers","Accept","initLogin","_Promise","resolve","catch","error","login","username","password","doFormLogin","doBasicAuthentication","doJaasAuthentication","getFormLoginUrl","getFormLoginData","encodedUsername","encodeURIComponent","encodedPassword","POST","data","addItem","btoa","then","removeItem","getLogoutUrl","redirectToLogout","postRedirectUrl","clear","redirectUrl","window","location","assign","logout","response"],"sources":["../../src/modularui/Authenticate.js"],"sourcesContent":["// @flow\nimport { HTTP_METHODS } from \"../constants/Constants\";\n\nimport universalFetch from \"../utils/fetch/universalFetch\";\nimport Cache from \"../utils/browser/Cache\";\n\nimport { UnauthorizedException } from \"../exceptions\";\nimport {\n INTERNAL_LOGIN_TYPE,\n loginType,\n loginPath,\n loginPasswordField,\n loginUsernameField,\n logoutPath,\n getBasePath,\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 authenticationType(): $Keys<typeof INTERNAL_LOGIN_TYPE> {\n const type = loginType();\n\n if (!type || type === INTERNAL_LOGIN_TYPE.JAAS) {\n return INTERNAL_LOGIN_TYPE.JAAS;\n }\n\n if (type.includes(\"FormClient\")) {\n return INTERNAL_LOGIN_TYPE.PAC4J_FORM;\n } else if (type.includes(\"IndirectBasicClient\")) {\n return INTERNAL_LOGIN_TYPE.PAC4J_BASIC;\n }\n return INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT;\n }\n\n /**\n */\n get isBasicAuthentication(): boolean {\n return (\n this._isBasic ||\n this.authenticationType === INTERNAL_LOGIN_TYPE.PAC4J_BASIC\n );\n }\n\n /**\n */\n set isBasicAuthentication(isBasicAuthentication: boolean) {\n this._isBasic = isBasicAuthentication;\n }\n\n /**\n */\n requestLogin(): Promise<any> {\n return universalFetch({\n url: `${getBasePath()}/login`,\n method: HTTP_METHODS.GET,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n });\n }\n\n /**\n */\n initLogin(initLogin: boolean): Promise<any> {\n if (this.isBasicAuthentication || !initLogin) {\n return Promise.resolve(true);\n }\n\n return this.requestLogin().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 login(username: string, password: string): Promise<any> {\n switch (this.authenticationType) {\n case INTERNAL_LOGIN_TYPE.PAC4J_FORM:\n return this.doFormLogin(username, password);\n case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:\n return this.doBasicAuthentication(username, password);\n case INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT:\n // pac4j should handle this\n return Promise.resolve();\n default:\n return this.doJaasAuthentication(username, password);\n }\n }\n\n /**\n */\n getFormLoginUrl(): string {\n switch (this.authenticationType) {\n case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:\n return `${getBasePath()}${loginPath(\"DirectBasicAuthClient\")}`;\n case INTERNAL_LOGIN_TYPE.PAC4J_FORM:\n return `${getBasePath()}${loginPath(\"FormClient\")}`;\n case INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT:\n //pac4j should handle this\n return \"\";\n default:\n return `${getBasePath()}/j_security_check`;\n }\n }\n\n /**\n */\n getFormLoginData(username: string, password: string): string {\n const encodedUsername = encodeURIComponent(username);\n const encodedPassword = encodeURIComponent(password);\n\n switch (this.authenticationType) {\n case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:\n case INTERNAL_LOGIN_TYPE.PAC4J_FORM:\n return `${loginUsernameField()}=${encodedUsername}&${loginPasswordField()}=${encodedPassword}`;\n case INTERNAL_LOGIN_TYPE.JAAS:\n return `j_username=${encodedUsername}&j_password=${encodedPassword}`;\n default:\n return \"\";\n }\n }\n\n /**\n */\n doFormLogin(username: string, password: string): Promise<any> {\n return universalFetch({\n url: this.getFormLoginUrl(),\n method: HTTP_METHODS.POST,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n data: this.getFormLoginData(username, password),\n });\n }\n\n /**\n */\n doBasicAuthentication(username: string, password: string): Promise<any> {\n Cache.addItem(\"basic\", btoa(`${username}:${password}`));\n return this.requestLogin();\n }\n\n /**\n */\n doJaasAuthentication(username: string, password: string): Promise<any> {\n return this.initLogin(true).then(() => {\n if (this.isBasicAuthentication) {\n Cache.removeItem(\"basic-ok\");\n return this.doBasicAuthentication(username, password).then(() => {\n Cache.addItem(\"basic-ok\", true);\n });\n }\n return this.doFormLogin(username, password);\n });\n }\n\n /**\n */\n getLogoutUrl(): string {\n const type = loginType();\n\n if (!type || type === INTERNAL_LOGIN_TYPE.JAAS) {\n return `${getBasePath()}/Logoff`;\n }\n\n return `${getBasePath()}${logoutPath()}`;\n }\n\n /**\n * Browser redirect to the logout url. (no xmlhttp)\n */\n redirectToLogout(postRedirectUrl?: string): void {\n Cache.clear();\n\n const redirectUrl = postRedirectUrl || getBasePath();\n\n window.location.assign(this.getLogoutUrl() + \"?url=\" + redirectUrl);\n }\n\n /**\n * Logout the user with xmlhttp\n */\n logout(): Promise<any> {\n return universalFetch({\n url: this.getLogoutUrl(),\n }).then((response) => {\n // clear cache because of cached contributions\n Cache.clear();\n return response;\n });\n }\n}\n\nexport default Authenticate;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Authenticate.js","names":["HTTP_METHODS","universalFetch","Cache","UnauthorizedException","INTERNAL_LOGIN_TYPE","loginType","loginPath","loginPasswordField","loginUsernameField","logoutPath","getBasePath","Authenticate","constructor","_defineProperty","_isBasic","authenticationType","type","JAAS","_includesInstanceProperty","call","PAC4J_FORM","PAC4J_BASIC","PAC4J_INDIRECT","isBasicAuthentication","requestLogin","url","method","GET","headers","Accept","initLogin","_Promise","resolve","catch","error","login","username","password","doFormLogin","doBasicAuthentication","doJaasAuthentication","getFormLoginUrl","getFormLoginData","encodedUsername","encodeURIComponent","encodedPassword","POST","data","addItem","btoa","then","removeItem","getLogoutUrl","redirectToLogout","postRedirectUrl","_context","clear","origin","window","location","redirectUrl","Function","bind","_startsWithInstanceProperty","assign","logout","response"],"sources":["../../src/modularui/Authenticate.js"],"sourcesContent":["// @flow\nimport { HTTP_METHODS } from \"../constants/Constants\";\n\nimport universalFetch from \"../utils/fetch/universalFetch\";\nimport Cache from \"../utils/browser/Cache\";\n\nimport { UnauthorizedException } from \"../exceptions\";\nimport {\n INTERNAL_LOGIN_TYPE,\n loginType,\n loginPath,\n loginPasswordField,\n loginUsernameField,\n logoutPath,\n getBasePath,\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 authenticationType(): $Keys<typeof INTERNAL_LOGIN_TYPE> {\n const type = loginType();\n\n if (!type || type === INTERNAL_LOGIN_TYPE.JAAS) {\n return INTERNAL_LOGIN_TYPE.JAAS;\n }\n\n if (type.includes(\"FormClient\")) {\n return INTERNAL_LOGIN_TYPE.PAC4J_FORM;\n } else if (type.includes(\"IndirectBasicClient\")) {\n return INTERNAL_LOGIN_TYPE.PAC4J_BASIC;\n }\n return INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT;\n }\n\n /**\n */\n get isBasicAuthentication(): boolean {\n return (\n this._isBasic ||\n this.authenticationType === INTERNAL_LOGIN_TYPE.PAC4J_BASIC\n );\n }\n\n /**\n */\n set isBasicAuthentication(isBasicAuthentication: boolean) {\n this._isBasic = isBasicAuthentication;\n }\n\n /**\n */\n requestLogin(): Promise<any> {\n return universalFetch({\n url: `${getBasePath()}/login`,\n method: HTTP_METHODS.GET,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n });\n }\n\n /**\n */\n initLogin(initLogin: boolean): Promise<any> {\n if (this.isBasicAuthentication || !initLogin) {\n return Promise.resolve(true);\n }\n\n return this.requestLogin().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 login(username: string, password: string): Promise<any> {\n switch (this.authenticationType) {\n case INTERNAL_LOGIN_TYPE.PAC4J_FORM:\n return this.doFormLogin(username, password);\n case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:\n return this.doBasicAuthentication(username, password);\n case INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT:\n // pac4j should handle this\n return Promise.resolve();\n default:\n return this.doJaasAuthentication(username, password);\n }\n }\n\n /**\n */\n getFormLoginUrl(): string {\n switch (this.authenticationType) {\n case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:\n return `${getBasePath()}${loginPath(\"DirectBasicAuthClient\")}`;\n case INTERNAL_LOGIN_TYPE.PAC4J_FORM:\n return `${getBasePath()}${loginPath(\"FormClient\")}`;\n case INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT:\n //pac4j should handle this\n return \"\";\n default:\n return `${getBasePath()}/j_security_check`;\n }\n }\n\n /**\n */\n getFormLoginData(username: string, password: string): string {\n const encodedUsername = encodeURIComponent(username);\n const encodedPassword = encodeURIComponent(password);\n\n switch (this.authenticationType) {\n case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:\n case INTERNAL_LOGIN_TYPE.PAC4J_FORM:\n return `${loginUsernameField()}=${encodedUsername}&${loginPasswordField()}=${encodedPassword}`;\n case INTERNAL_LOGIN_TYPE.JAAS:\n return `j_username=${encodedUsername}&j_password=${encodedPassword}`;\n default:\n return \"\";\n }\n }\n\n /**\n */\n doFormLogin(username: string, password: string): Promise<any> {\n return universalFetch({\n url: this.getFormLoginUrl(),\n method: HTTP_METHODS.POST,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n data: this.getFormLoginData(username, password),\n });\n }\n\n /**\n */\n doBasicAuthentication(username: string, password: string): Promise<any> {\n Cache.addItem(\"basic\", btoa(`${username}:${password}`));\n return this.requestLogin();\n }\n\n /**\n */\n doJaasAuthentication(username: string, password: string): Promise<any> {\n return this.initLogin(true).then(() => {\n if (this.isBasicAuthentication) {\n Cache.removeItem(\"basic-ok\");\n return this.doBasicAuthentication(username, password).then(() => {\n Cache.addItem(\"basic-ok\", true);\n });\n }\n return this.doFormLogin(username, password);\n });\n }\n\n /**\n */\n getLogoutUrl(): string {\n const type = loginType();\n\n if (!type || type === INTERNAL_LOGIN_TYPE.JAAS) {\n return `${getBasePath()}/Logoff`;\n }\n\n return `${getBasePath()}${logoutPath()}`;\n }\n\n /**\n * Browser redirect to the logout url. (no xmlhttp)\n */\n redirectToLogout(postRedirectUrl: string = \"\"): void {\n Cache.clear();\n\n const origin = window.location.origin;\n const redirectUrl = postRedirectUrl?.startsWith(\"http\")\n ? postRedirectUrl\n : `${origin}${getBasePath()}`;\n\n window.location.assign(this.getLogoutUrl() + \"?url=\" + redirectUrl);\n }\n\n /**\n * Logout the user with xmlhttp\n */\n logout(): Promise<any> {\n return universalFetch({\n url: this.getLogoutUrl(),\n }).then((response) => {\n // clear cache because of cached contributions\n Cache.clear();\n return response;\n });\n }\n}\n\nexport default Authenticate;\n"],"mappings":"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","ignoreList":[]}
@@ -45,8 +45,7 @@ exports.useLogin = useLogin;
45
45
  const useLogout = () => {
46
46
  const dispatch = (0, _reactRedux.useDispatch)();
47
47
  const application = (0, _reactRedux.useSelector)(_ModularUISelectors.getApplication);
48
- const LOGOUT_PATH = (0, _constants.logoutPath)();
49
- const BASE_PATH = (0, _constants.getBasePathServer)();
48
+ const BASE_PATH = (0, _constants.getBasePath)();
50
49
  const authenticate = new _modularui.Authenticate();
51
50
  const isAuthenticated = application?.isLoggedIn ?? false;
52
51
  return {
@@ -58,7 +57,7 @@ const useLogout = () => {
58
57
  authenticate.redirectToLogout();
59
58
  } else if (_Cache.default.getItem("isRedirectLogin")) {
60
59
  const origin = window.location.origin;
61
- const url = `${origin}${BASE_PATH}/logout?url=${origin}${BASE_PATH}${LOGOUT_PATH}`;
60
+ const url = `${authenticate.getLogoutUrl()}?url=${origin}${BASE_PATH}`;
62
61
  _Cache.default.setItem("isRedirectLogin", false);
63
62
  window.location.assign(url);
64
63
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"useAuthentication.js","names":["_reactRedux","require","_ModularUISelectors","_actions","_Cache","_interopRequireDefault","_constants","_exceptions","_modularui","useLogin","Cache","setItem","dispatch","useDispatch","application","useSelector","getApplication","auth","state","isAuthenticated","isLoggedIn","authenticationTypes","DEFAULT_AUTHENTICATION_TYPE","errorMessage","error","resetErrors","resetAuthErrors","login","username","password","redirectLogin","authenticationType","getItem","IllegalStateException","authentication","redirectUri","window","location","assign","getBasePathServer","exports","useLogout","LOGOUT_PATH","logoutPath","BASE_PATH","authenticate","Authenticate","logout","type","INTERNAL_LOGIN_TYPE","PAC4J_INDIRECT","redirectToLogout","origin","url","logoutUrl","getLogoutUrl"],"sources":["../../src/hooks/useAuthentication.js"],"sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\n\nimport { getApplication } from \"../redux/_modularui/ModularUISelectors\";\nimport { login, logout, resetAuthErrors } from \"../redux/actions\";\n\nimport Cache from \"../utils/browser/Cache\";\nimport {\n DEFAULT_AUTHENTICATION_TYPE,\n getBasePathServer,\n INTERNAL_LOGIN_TYPE,\n logoutPath,\n} from \"../constants\";\nimport { IllegalStateException } from \"../exceptions\";\nimport { Authenticate } from \"../modularui\";\n\nimport type { ResetAuthErrorsAction } from \"../redux/types\";\nimport type { AuthenticationType } from \"../models/types\";\n\ntype LoginHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n errorMessage: ?string,\n resetErrors: () => ResetAuthErrorsAction,\n login: (username: string, password: string) => void,\n redirectLogin: (authenticationType: AuthenticationType) => void,\n};\ntype LogoutHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n logout: () => void,\n logoutUrl: string,\n};\n\n/**\n */\nexport const useLogin = (): LoginHook => {\n Cache.setItem(\"isRedirectLogin\", false);\n\n const dispatch = useDispatch();\n\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth);\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [\n DEFAULT_AUTHENTICATION_TYPE,\n ],\n errorMessage: auth.error,\n resetErrors: () => dispatch(resetAuthErrors()),\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n redirectLogin: (authenticationType: AuthenticationType) => {\n if (Cache.getItem(\"isRedirectLogin\")) {\n // prevent endless loop in redirects when authentication type can't be redirected\n throw new IllegalStateException(\n `Could not redirect to '${\n authenticationType.authentication\n }' using url: '${authenticationType.redirectUri ?? \"\"}'`,\n );\n }\n\n if (!isAuthenticated) {\n Cache.setItem(\"isRedirectLogin\", true);\n window.location.assign(\n `${getBasePathServer()}${authenticationType.redirectUri ?? \"\"}`,\n );\n }\n },\n };\n};\n\n/**\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n const application = useSelector(getApplication);\n\n const LOGOUT_PATH = logoutPath();\n const BASE_PATH = getBasePathServer();\n\n const authenticate = new Authenticate();\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [\n DEFAULT_AUTHENTICATION_TYPE,\n ],\n logout: () => {\n const type = authenticate.authenticationType;\n if (type === INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT) {\n authenticate.redirectToLogout();\n } else if (Cache.getItem(\"isRedirectLogin\")) {\n const origin = window.location.origin;\n const url = `${origin}${BASE_PATH}/logout?url=${origin}${BASE_PATH}${LOGOUT_PATH}`;\n Cache.setItem(\"isRedirectLogin\", false);\n window.location.assign(url);\n } else {\n return dispatch(logout());\n }\n },\n logoutUrl: authenticate.getLogoutUrl(),\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useAuthentication.js","names":["_reactRedux","require","_ModularUISelectors","_actions","_Cache","_interopRequireDefault","_constants","_exceptions","_modularui","useLogin","Cache","setItem","dispatch","useDispatch","application","useSelector","getApplication","auth","state","isAuthenticated","isLoggedIn","authenticationTypes","DEFAULT_AUTHENTICATION_TYPE","errorMessage","error","resetErrors","resetAuthErrors","login","username","password","redirectLogin","authenticationType","getItem","IllegalStateException","authentication","redirectUri","window","location","assign","getBasePathServer","exports","useLogout","BASE_PATH","getBasePath","authenticate","Authenticate","logout","type","INTERNAL_LOGIN_TYPE","PAC4J_INDIRECT","redirectToLogout","origin","url","getLogoutUrl","logoutUrl"],"sources":["../../src/hooks/useAuthentication.js"],"sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\n\nimport { getApplication } from \"../redux/_modularui/ModularUISelectors\";\nimport { login, logout, resetAuthErrors } from \"../redux/actions\";\n\nimport Cache from \"../utils/browser/Cache\";\nimport {\n DEFAULT_AUTHENTICATION_TYPE,\n getBasePath,\n getBasePathServer,\n INTERNAL_LOGIN_TYPE,\n} from \"../constants\";\nimport { IllegalStateException } from \"../exceptions\";\nimport { Authenticate } from \"../modularui\";\n\nimport type { ResetAuthErrorsAction } from \"../redux/types\";\nimport type { AuthenticationType } from \"../models/types\";\n\ntype LoginHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n errorMessage: ?string,\n resetErrors: () => ResetAuthErrorsAction,\n login: (username: string, password: string) => void,\n redirectLogin: (authenticationType: AuthenticationType) => void,\n};\ntype LogoutHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n logout: () => void,\n logoutUrl: string,\n};\n\n/**\n */\nexport const useLogin = (): LoginHook => {\n Cache.setItem(\"isRedirectLogin\", false);\n\n const dispatch = useDispatch();\n\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth);\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [\n DEFAULT_AUTHENTICATION_TYPE,\n ],\n errorMessage: auth.error,\n resetErrors: () => dispatch(resetAuthErrors()),\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n redirectLogin: (authenticationType: AuthenticationType) => {\n if (Cache.getItem(\"isRedirectLogin\")) {\n // prevent endless loop in redirects when authentication type can't be redirected\n throw new IllegalStateException(\n `Could not redirect to '${\n authenticationType.authentication\n }' using url: '${authenticationType.redirectUri ?? \"\"}'`,\n );\n }\n\n if (!isAuthenticated) {\n Cache.setItem(\"isRedirectLogin\", true);\n window.location.assign(\n `${getBasePathServer()}${authenticationType.redirectUri ?? \"\"}`,\n );\n }\n },\n };\n};\n\n/**\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n const application = useSelector(getApplication);\n\n const BASE_PATH = getBasePath();\n\n const authenticate = new Authenticate();\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [\n DEFAULT_AUTHENTICATION_TYPE,\n ],\n logout: () => {\n const type = authenticate.authenticationType;\n if (type === INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT) {\n authenticate.redirectToLogout();\n } else if (Cache.getItem(\"isRedirectLogin\")) {\n const origin = window.location.origin;\n const url = `${authenticate.getLogoutUrl()}?url=${origin}${BASE_PATH}`;\n Cache.setItem(\"isRedirectLogin\", false);\n window.location.assign(url);\n } else {\n return dispatch(logout());\n }\n },\n logoutUrl: authenticate.getLogoutUrl(),\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
9
9
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
10
+ var _startsWith = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/starts-with"));
10
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
11
12
  var _Constants = require("../constants/Constants");
12
13
  var _universalFetch = _interopRequireDefault(require("../utils/fetch/universalFetch"));
@@ -176,9 +177,11 @@ class Authenticate {
176
177
  /**
177
178
  * Browser redirect to the logout url. (no xmlhttp)
178
179
  */
179
- redirectToLogout(postRedirectUrl) {
180
+ redirectToLogout(postRedirectUrl = "") {
181
+ var _context;
180
182
  _Cache.default.clear();
181
- const redirectUrl = postRedirectUrl || (0, _constants.getBasePath)();
183
+ const origin = window.location.origin;
184
+ const redirectUrl = ((_context = postRedirectUrl) == null ? void 0 : Function.call.bind((0, _startsWith.default)(_context), _context))?.("http") ? postRedirectUrl : `${origin}${(0, _constants.getBasePath)()}`;
182
185
  window.location.assign(this.getLogoutUrl() + "?url=" + redirectUrl);
183
186
  }
184
187
 
@@ -1 +1 @@
1
- {"version":3,"file":"Authenticate.js","names":["_Constants","require","_universalFetch","_interopRequireDefault","_Cache","_exceptions","_constants","Authenticate","constructor","_defineProperty2","default","_isBasic","authenticationType","type","loginType","INTERNAL_LOGIN_TYPE","JAAS","_includes","call","PAC4J_FORM","PAC4J_BASIC","PAC4J_INDIRECT","isBasicAuthentication","requestLogin","universalFetch","url","getBasePath","method","HTTP_METHODS","GET","headers","Accept","initLogin","_promise","resolve","catch","error","UnauthorizedException","login","username","password","doFormLogin","doBasicAuthentication","doJaasAuthentication","getFormLoginUrl","loginPath","getFormLoginData","encodedUsername","encodeURIComponent","encodedPassword","loginUsernameField","loginPasswordField","POST","data","Cache","addItem","btoa","then","removeItem","getLogoutUrl","logoutPath","redirectToLogout","postRedirectUrl","clear","redirectUrl","window","location","assign","logout","response","_default","exports"],"sources":["../../src/modularui/Authenticate.js"],"sourcesContent":["// @flow\nimport { HTTP_METHODS } from \"../constants/Constants\";\n\nimport universalFetch from \"../utils/fetch/universalFetch\";\nimport Cache from \"../utils/browser/Cache\";\n\nimport { UnauthorizedException } from \"../exceptions\";\nimport {\n INTERNAL_LOGIN_TYPE,\n loginType,\n loginPath,\n loginPasswordField,\n loginUsernameField,\n logoutPath,\n getBasePath,\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 authenticationType(): $Keys<typeof INTERNAL_LOGIN_TYPE> {\n const type = loginType();\n\n if (!type || type === INTERNAL_LOGIN_TYPE.JAAS) {\n return INTERNAL_LOGIN_TYPE.JAAS;\n }\n\n if (type.includes(\"FormClient\")) {\n return INTERNAL_LOGIN_TYPE.PAC4J_FORM;\n } else if (type.includes(\"IndirectBasicClient\")) {\n return INTERNAL_LOGIN_TYPE.PAC4J_BASIC;\n }\n return INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT;\n }\n\n /**\n */\n get isBasicAuthentication(): boolean {\n return (\n this._isBasic ||\n this.authenticationType === INTERNAL_LOGIN_TYPE.PAC4J_BASIC\n );\n }\n\n /**\n */\n set isBasicAuthentication(isBasicAuthentication: boolean) {\n this._isBasic = isBasicAuthentication;\n }\n\n /**\n */\n requestLogin(): Promise<any> {\n return universalFetch({\n url: `${getBasePath()}/login`,\n method: HTTP_METHODS.GET,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n });\n }\n\n /**\n */\n initLogin(initLogin: boolean): Promise<any> {\n if (this.isBasicAuthentication || !initLogin) {\n return Promise.resolve(true);\n }\n\n return this.requestLogin().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 login(username: string, password: string): Promise<any> {\n switch (this.authenticationType) {\n case INTERNAL_LOGIN_TYPE.PAC4J_FORM:\n return this.doFormLogin(username, password);\n case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:\n return this.doBasicAuthentication(username, password);\n case INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT:\n // pac4j should handle this\n return Promise.resolve();\n default:\n return this.doJaasAuthentication(username, password);\n }\n }\n\n /**\n */\n getFormLoginUrl(): string {\n switch (this.authenticationType) {\n case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:\n return `${getBasePath()}${loginPath(\"DirectBasicAuthClient\")}`;\n case INTERNAL_LOGIN_TYPE.PAC4J_FORM:\n return `${getBasePath()}${loginPath(\"FormClient\")}`;\n case INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT:\n //pac4j should handle this\n return \"\";\n default:\n return `${getBasePath()}/j_security_check`;\n }\n }\n\n /**\n */\n getFormLoginData(username: string, password: string): string {\n const encodedUsername = encodeURIComponent(username);\n const encodedPassword = encodeURIComponent(password);\n\n switch (this.authenticationType) {\n case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:\n case INTERNAL_LOGIN_TYPE.PAC4J_FORM:\n return `${loginUsernameField()}=${encodedUsername}&${loginPasswordField()}=${encodedPassword}`;\n case INTERNAL_LOGIN_TYPE.JAAS:\n return `j_username=${encodedUsername}&j_password=${encodedPassword}`;\n default:\n return \"\";\n }\n }\n\n /**\n */\n doFormLogin(username: string, password: string): Promise<any> {\n return universalFetch({\n url: this.getFormLoginUrl(),\n method: HTTP_METHODS.POST,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n data: this.getFormLoginData(username, password),\n });\n }\n\n /**\n */\n doBasicAuthentication(username: string, password: string): Promise<any> {\n Cache.addItem(\"basic\", btoa(`${username}:${password}`));\n return this.requestLogin();\n }\n\n /**\n */\n doJaasAuthentication(username: string, password: string): Promise<any> {\n return this.initLogin(true).then(() => {\n if (this.isBasicAuthentication) {\n Cache.removeItem(\"basic-ok\");\n return this.doBasicAuthentication(username, password).then(() => {\n Cache.addItem(\"basic-ok\", true);\n });\n }\n return this.doFormLogin(username, password);\n });\n }\n\n /**\n */\n getLogoutUrl(): string {\n const type = loginType();\n\n if (!type || type === INTERNAL_LOGIN_TYPE.JAAS) {\n return `${getBasePath()}/Logoff`;\n }\n\n return `${getBasePath()}${logoutPath()}`;\n }\n\n /**\n * Browser redirect to the logout url. (no xmlhttp)\n */\n redirectToLogout(postRedirectUrl?: string): void {\n Cache.clear();\n\n const redirectUrl = postRedirectUrl || getBasePath();\n\n window.location.assign(this.getLogoutUrl() + \"?url=\" + redirectUrl);\n }\n\n /**\n * Logout the user with xmlhttp\n */\n logout(): Promise<any> {\n return universalFetch({\n url: this.getLogoutUrl(),\n }).then((response) => {\n // clear cache because of cached contributions\n Cache.clear();\n return response;\n });\n }\n}\n\nexport default Authenticate;\n"],"mappings":";;;;;;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,eAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,MAAA,GAAAD,sBAAA,CAAAF,OAAA;AAEA,IAAAI,WAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AAUA;AACA;AACA,MAAMM,YAAY,CAAC;EAGjB;AACF;EACEC,WAAWA,CAAA,EAAG;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IACZ,IAAI,CAACC,QAAQ,GAAG,KAAK;EACvB;;EAEA;AACF;EACE,IAAIC,kBAAkBA,CAAA,EAAsC;IAC1D,MAAMC,IAAI,GAAG,IAAAC,oBAAS,EAAC,CAAC;IAExB,IAAI,CAACD,IAAI,IAAIA,IAAI,KAAKE,8BAAmB,CAACC,IAAI,EAAE;MAC9C,OAAOD,8BAAmB,CAACC,IAAI;IACjC;IAEA,IAAI,IAAAC,SAAA,CAAAP,OAAA,EAAAG,IAAI,EAAAK,IAAA,CAAJL,IAAI,EAAU,YAAY,CAAC,EAAE;MAC/B,OAAOE,8BAAmB,CAACI,UAAU;IACvC,CAAC,MAAM,IAAI,IAAAF,SAAA,CAAAP,OAAA,EAAAG,IAAI,EAAAK,IAAA,CAAJL,IAAI,EAAU,qBAAqB,CAAC,EAAE;MAC/C,OAAOE,8BAAmB,CAACK,WAAW;IACxC;IACA,OAAOL,8BAAmB,CAACM,cAAc;EAC3C;;EAEA;AACF;EACE,IAAIC,qBAAqBA,CAAA,EAAY;IACnC,OACE,IAAI,CAACX,QAAQ,IACb,IAAI,CAACC,kBAAkB,KAAKG,8BAAmB,CAACK,WAAW;EAE/D;;EAEA;AACF;EACE,IAAIE,qBAAqBA,CAACA,qBAA8B,EAAE;IACxD,IAAI,CAACX,QAAQ,GAAGW,qBAAqB;EACvC;;EAEA;AACF;EACEC,YAAYA,CAAA,EAAiB;IAC3B,OAAO,IAAAC,uBAAc,EAAC;MACpBC,GAAG,EAAE,GAAG,IAAAC,sBAAW,EAAC,CAAC,QAAQ;MAC7BC,MAAM,EAAEC,uBAAY,CAACC,GAAG;MACxBC,OAAO,EAAE;QACPC,MAAM,EAAE,kBAAkB;QAC1B,cAAc,EAAE;MAClB;IACF,CAAC,CAAC;EACJ;;EAEA;AACF;EACEC,SAASA,CAACA,SAAkB,EAAgB;IAC1C,IAAI,IAAI,CAACV,qBAAqB,IAAI,CAACU,SAAS,EAAE;MAC5C,OAAOC,QAAA,CAAAvB,OAAA,CAAQwB,OAAO,CAAC,IAAI,CAAC;IAC9B;IAEA,OAAO,IAAI,CAACX,YAAY,CAAC,CAAC,CAACY,KAAK,CAAEC,KAAK,IAAK;MAC1C;MACA;MACA;MACA,IAAIA,KAAK,YAAYC,iCAAqB,EAAE;QAC1C,IAAI,CAACf,qBAAqB,GAAG,IAAI;MACnC;MAEA,OAAOW,QAAA,CAAAvB,OAAA,CAAQwB,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC;EACJ;;EAEA;AACF;EACEI,KAAKA,CAACC,QAAgB,EAAEC,QAAgB,EAAgB;IACtD,QAAQ,IAAI,CAAC5B,kBAAkB;MAC7B,KAAKG,8BAAmB,CAACI,UAAU;QACjC,OAAO,IAAI,CAACsB,WAAW,CAACF,QAAQ,EAAEC,QAAQ,CAAC;MAC7C,KAAKzB,8BAAmB,CAACK,WAAW;QAClC,OAAO,IAAI,CAACsB,qBAAqB,CAACH,QAAQ,EAAEC,QAAQ,CAAC;MACvD,KAAKzB,8BAAmB,CAACM,cAAc;QACrC;QACA,OAAOY,QAAA,CAAAvB,OAAA,CAAQwB,OAAO,CAAC,CAAC;MAC1B;QACE,OAAO,IAAI,CAACS,oBAAoB,CAACJ,QAAQ,EAAEC,QAAQ,CAAC;IACxD;EACF;;EAEA;AACF;EACEI,eAAeA,CAAA,EAAW;IACxB,QAAQ,IAAI,CAAChC,kBAAkB;MAC7B,KAAKG,8BAAmB,CAACK,WAAW;QAClC,OAAO,GAAG,IAAAM,sBAAW,EAAC,CAAC,GAAG,IAAAmB,oBAAS,EAAC,uBAAuB,CAAC,EAAE;MAChE,KAAK9B,8BAAmB,CAACI,UAAU;QACjC,OAAO,GAAG,IAAAO,sBAAW,EAAC,CAAC,GAAG,IAAAmB,oBAAS,EAAC,YAAY,CAAC,EAAE;MACrD,KAAK9B,8BAAmB,CAACM,cAAc;QACrC;QACA,OAAO,EAAE;MACX;QACE,OAAO,GAAG,IAAAK,sBAAW,EAAC,CAAC,mBAAmB;IAC9C;EACF;;EAEA;AACF;EACEoB,gBAAgBA,CAACP,QAAgB,EAAEC,QAAgB,EAAU;IAC3D,MAAMO,eAAe,GAAGC,kBAAkB,CAACT,QAAQ,CAAC;IACpD,MAAMU,eAAe,GAAGD,kBAAkB,CAACR,QAAQ,CAAC;IAEpD,QAAQ,IAAI,CAAC5B,kBAAkB;MAC7B,KAAKG,8BAAmB,CAACK,WAAW;MACpC,KAAKL,8BAAmB,CAACI,UAAU;QACjC,OAAO,GAAG,IAAA+B,6BAAkB,EAAC,CAAC,IAAIH,eAAe,IAAI,IAAAI,6BAAkB,EAAC,CAAC,IAAIF,eAAe,EAAE;MAChG,KAAKlC,8BAAmB,CAACC,IAAI;QAC3B,OAAO,cAAc+B,eAAe,eAAeE,eAAe,EAAE;MACtE;QACE,OAAO,EAAE;IACb;EACF;;EAEA;AACF;EACER,WAAWA,CAACF,QAAgB,EAAEC,QAAgB,EAAgB;IAC5D,OAAO,IAAAhB,uBAAc,EAAC;MACpBC,GAAG,EAAE,IAAI,CAACmB,eAAe,CAAC,CAAC;MAC3BjB,MAAM,EAAEC,uBAAY,CAACwB,IAAI;MACzBtB,OAAO,EAAE;QACPC,MAAM,EAAE,kBAAkB;QAC1B,cAAc,EAAE;MAClB,CAAC;MACDsB,IAAI,EAAE,IAAI,CAACP,gBAAgB,CAACP,QAAQ,EAAEC,QAAQ;IAChD,CAAC,CAAC;EACJ;;EAEA;AACF;EACEE,qBAAqBA,CAACH,QAAgB,EAAEC,QAAgB,EAAgB;IACtEc,cAAK,CAACC,OAAO,CAAC,OAAO,EAAEC,IAAI,CAAC,GAAGjB,QAAQ,IAAIC,QAAQ,EAAE,CAAC,CAAC;IACvD,OAAO,IAAI,CAACjB,YAAY,CAAC,CAAC;EAC5B;;EAEA;AACF;EACEoB,oBAAoBA,CAACJ,QAAgB,EAAEC,QAAgB,EAAgB;IACrE,OAAO,IAAI,CAACR,SAAS,CAAC,IAAI,CAAC,CAACyB,IAAI,CAAC,MAAM;MACrC,IAAI,IAAI,CAACnC,qBAAqB,EAAE;QAC9BgC,cAAK,CAACI,UAAU,CAAC,UAAU,CAAC;QAC5B,OAAO,IAAI,CAAChB,qBAAqB,CAACH,QAAQ,EAAEC,QAAQ,CAAC,CAACiB,IAAI,CAAC,MAAM;UAC/DH,cAAK,CAACC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;QACjC,CAAC,CAAC;MACJ;MACA,OAAO,IAAI,CAACd,WAAW,CAACF,QAAQ,EAAEC,QAAQ,CAAC;IAC7C,CAAC,CAAC;EACJ;;EAEA;AACF;EACEmB,YAAYA,CAAA,EAAW;IACrB,MAAM9C,IAAI,GAAG,IAAAC,oBAAS,EAAC,CAAC;IAExB,IAAI,CAACD,IAAI,IAAIA,IAAI,KAAKE,8BAAmB,CAACC,IAAI,EAAE;MAC9C,OAAO,GAAG,IAAAU,sBAAW,EAAC,CAAC,SAAS;IAClC;IAEA,OAAO,GAAG,IAAAA,sBAAW,EAAC,CAAC,GAAG,IAAAkC,qBAAU,EAAC,CAAC,EAAE;EAC1C;;EAEA;AACF;AACA;EACEC,gBAAgBA,CAACC,eAAwB,EAAQ;IAC/CR,cAAK,CAACS,KAAK,CAAC,CAAC;IAEb,MAAMC,WAAW,GAAGF,eAAe,IAAI,IAAApC,sBAAW,EAAC,CAAC;IAEpDuC,MAAM,CAACC,QAAQ,CAACC,MAAM,CAAC,IAAI,CAACR,YAAY,CAAC,CAAC,GAAG,OAAO,GAAGK,WAAW,CAAC;EACrE;;EAEA;AACF;AACA;EACEI,MAAMA,CAAA,EAAiB;IACrB,OAAO,IAAA5C,uBAAc,EAAC;MACpBC,GAAG,EAAE,IAAI,CAACkC,YAAY,CAAC;IACzB,CAAC,CAAC,CAACF,IAAI,CAAEY,QAAQ,IAAK;MACpB;MACAf,cAAK,CAACS,KAAK,CAAC,CAAC;MACb,OAAOM,QAAQ;IACjB,CAAC,CAAC;EACJ;AACF;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAA7D,OAAA,GAEcH,YAAY","ignoreList":[]}
1
+ {"version":3,"file":"Authenticate.js","names":["_Constants","require","_universalFetch","_interopRequireDefault","_Cache","_exceptions","_constants","Authenticate","constructor","_defineProperty2","default","_isBasic","authenticationType","type","loginType","INTERNAL_LOGIN_TYPE","JAAS","_includes","call","PAC4J_FORM","PAC4J_BASIC","PAC4J_INDIRECT","isBasicAuthentication","requestLogin","universalFetch","url","getBasePath","method","HTTP_METHODS","GET","headers","Accept","initLogin","_promise","resolve","catch","error","UnauthorizedException","login","username","password","doFormLogin","doBasicAuthentication","doJaasAuthentication","getFormLoginUrl","loginPath","getFormLoginData","encodedUsername","encodeURIComponent","encodedPassword","loginUsernameField","loginPasswordField","POST","data","Cache","addItem","btoa","then","removeItem","getLogoutUrl","logoutPath","redirectToLogout","postRedirectUrl","_context","clear","origin","window","location","redirectUrl","Function","bind","_startsWith","assign","logout","response","_default","exports"],"sources":["../../src/modularui/Authenticate.js"],"sourcesContent":["// @flow\nimport { HTTP_METHODS } from \"../constants/Constants\";\n\nimport universalFetch from \"../utils/fetch/universalFetch\";\nimport Cache from \"../utils/browser/Cache\";\n\nimport { UnauthorizedException } from \"../exceptions\";\nimport {\n INTERNAL_LOGIN_TYPE,\n loginType,\n loginPath,\n loginPasswordField,\n loginUsernameField,\n logoutPath,\n getBasePath,\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 authenticationType(): $Keys<typeof INTERNAL_LOGIN_TYPE> {\n const type = loginType();\n\n if (!type || type === INTERNAL_LOGIN_TYPE.JAAS) {\n return INTERNAL_LOGIN_TYPE.JAAS;\n }\n\n if (type.includes(\"FormClient\")) {\n return INTERNAL_LOGIN_TYPE.PAC4J_FORM;\n } else if (type.includes(\"IndirectBasicClient\")) {\n return INTERNAL_LOGIN_TYPE.PAC4J_BASIC;\n }\n return INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT;\n }\n\n /**\n */\n get isBasicAuthentication(): boolean {\n return (\n this._isBasic ||\n this.authenticationType === INTERNAL_LOGIN_TYPE.PAC4J_BASIC\n );\n }\n\n /**\n */\n set isBasicAuthentication(isBasicAuthentication: boolean) {\n this._isBasic = isBasicAuthentication;\n }\n\n /**\n */\n requestLogin(): Promise<any> {\n return universalFetch({\n url: `${getBasePath()}/login`,\n method: HTTP_METHODS.GET,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n });\n }\n\n /**\n */\n initLogin(initLogin: boolean): Promise<any> {\n if (this.isBasicAuthentication || !initLogin) {\n return Promise.resolve(true);\n }\n\n return this.requestLogin().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 login(username: string, password: string): Promise<any> {\n switch (this.authenticationType) {\n case INTERNAL_LOGIN_TYPE.PAC4J_FORM:\n return this.doFormLogin(username, password);\n case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:\n return this.doBasicAuthentication(username, password);\n case INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT:\n // pac4j should handle this\n return Promise.resolve();\n default:\n return this.doJaasAuthentication(username, password);\n }\n }\n\n /**\n */\n getFormLoginUrl(): string {\n switch (this.authenticationType) {\n case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:\n return `${getBasePath()}${loginPath(\"DirectBasicAuthClient\")}`;\n case INTERNAL_LOGIN_TYPE.PAC4J_FORM:\n return `${getBasePath()}${loginPath(\"FormClient\")}`;\n case INTERNAL_LOGIN_TYPE.PAC4J_INDIRECT:\n //pac4j should handle this\n return \"\";\n default:\n return `${getBasePath()}/j_security_check`;\n }\n }\n\n /**\n */\n getFormLoginData(username: string, password: string): string {\n const encodedUsername = encodeURIComponent(username);\n const encodedPassword = encodeURIComponent(password);\n\n switch (this.authenticationType) {\n case INTERNAL_LOGIN_TYPE.PAC4J_BASIC:\n case INTERNAL_LOGIN_TYPE.PAC4J_FORM:\n return `${loginUsernameField()}=${encodedUsername}&${loginPasswordField()}=${encodedPassword}`;\n case INTERNAL_LOGIN_TYPE.JAAS:\n return `j_username=${encodedUsername}&j_password=${encodedPassword}`;\n default:\n return \"\";\n }\n }\n\n /**\n */\n doFormLogin(username: string, password: string): Promise<any> {\n return universalFetch({\n url: this.getFormLoginUrl(),\n method: HTTP_METHODS.POST,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n data: this.getFormLoginData(username, password),\n });\n }\n\n /**\n */\n doBasicAuthentication(username: string, password: string): Promise<any> {\n Cache.addItem(\"basic\", btoa(`${username}:${password}`));\n return this.requestLogin();\n }\n\n /**\n */\n doJaasAuthentication(username: string, password: string): Promise<any> {\n return this.initLogin(true).then(() => {\n if (this.isBasicAuthentication) {\n Cache.removeItem(\"basic-ok\");\n return this.doBasicAuthentication(username, password).then(() => {\n Cache.addItem(\"basic-ok\", true);\n });\n }\n return this.doFormLogin(username, password);\n });\n }\n\n /**\n */\n getLogoutUrl(): string {\n const type = loginType();\n\n if (!type || type === INTERNAL_LOGIN_TYPE.JAAS) {\n return `${getBasePath()}/Logoff`;\n }\n\n return `${getBasePath()}${logoutPath()}`;\n }\n\n /**\n * Browser redirect to the logout url. (no xmlhttp)\n */\n redirectToLogout(postRedirectUrl: string = \"\"): void {\n Cache.clear();\n\n const origin = window.location.origin;\n const redirectUrl = postRedirectUrl?.startsWith(\"http\")\n ? postRedirectUrl\n : `${origin}${getBasePath()}`;\n\n window.location.assign(this.getLogoutUrl() + \"?url=\" + redirectUrl);\n }\n\n /**\n * Logout the user with xmlhttp\n */\n logout(): Promise<any> {\n return universalFetch({\n url: this.getLogoutUrl(),\n }).then((response) => {\n // clear cache because of cached contributions\n Cache.clear();\n return response;\n });\n }\n}\n\nexport default Authenticate;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beinformed/ui",
3
- "version": "1.63.9",
3
+ "version": "1.63.10",
4
4
  "description": "Toolbox for be informed javascript layouts",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "bugs": "https://support.beinformed.com",
@@ -7,9 +7,9 @@ import { login, logout, resetAuthErrors } from "../redux/actions";
7
7
  import Cache from "../utils/browser/Cache";
8
8
  import {
9
9
  DEFAULT_AUTHENTICATION_TYPE,
10
+ getBasePath,
10
11
  getBasePathServer,
11
12
  INTERNAL_LOGIN_TYPE,
12
- logoutPath,
13
13
  } from "../constants";
14
14
  import { IllegalStateException } from "../exceptions";
15
15
  import { Authenticate } from "../modularui";
@@ -79,8 +79,7 @@ export const useLogout = (): LogoutHook => {
79
79
  const dispatch = useDispatch();
80
80
  const application = useSelector(getApplication);
81
81
 
82
- const LOGOUT_PATH = logoutPath();
83
- const BASE_PATH = getBasePathServer();
82
+ const BASE_PATH = getBasePath();
84
83
 
85
84
  const authenticate = new Authenticate();
86
85
 
@@ -96,7 +95,7 @@ export const useLogout = (): LogoutHook => {
96
95
  authenticate.redirectToLogout();
97
96
  } else if (Cache.getItem("isRedirectLogin")) {
98
97
  const origin = window.location.origin;
99
- const url = `${origin}${BASE_PATH}/logout?url=${origin}${BASE_PATH}${LOGOUT_PATH}`;
98
+ const url = `${authenticate.getLogoutUrl()}?url=${origin}${BASE_PATH}`;
100
99
  Cache.setItem("isRedirectLogin", false);
101
100
  window.location.assign(url);
102
101
  } else {
@@ -189,10 +189,13 @@ class Authenticate {
189
189
  /**
190
190
  * Browser redirect to the logout url. (no xmlhttp)
191
191
  */
192
- redirectToLogout(postRedirectUrl?: string): void {
192
+ redirectToLogout(postRedirectUrl: string = ""): void {
193
193
  Cache.clear();
194
194
 
195
- const redirectUrl = postRedirectUrl || getBasePath();
195
+ const origin = window.location.origin;
196
+ const redirectUrl = postRedirectUrl?.startsWith("http")
197
+ ? postRedirectUrl
198
+ : `${origin}${getBasePath()}`;
196
199
 
197
200
  window.location.assign(this.getLogoutUrl() + "?url=" + redirectUrl);
198
201
  }