@multiplatform.one/keycloak 0.2.10 → 0.2.12
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/dist/esm/provider/keycloakProvider.mjs +24 -9
- package/dist/esm/provider/keycloakProvider.mjs.map +2 -2
- package/dist/jsx/provider/keycloakProvider.mjs +28 -7
- package/dist/jsx/provider/keycloakProvider.mjs.map +2 -2
- package/dist/lib/provider/keycloakProvider.d.ts +4 -1
- package/dist/lib/provider/keycloakProvider.js +31 -6
- package/dist/lib/provider/keycloakProvider.js.map +2 -2
- package/dist/lib/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/src/provider/keycloakProvider.tsx +29 -6
|
@@ -109,7 +109,7 @@ function _arrayWithHoles(arr) {
|
|
|
109
109
|
return arr;
|
|
110
110
|
}
|
|
111
111
|
import Keycloak from "@bitspur/keycloak-js";
|
|
112
|
-
import React, { useMemo, useEffect, useState } from "react";
|
|
112
|
+
import React, { useMemo, useEffect, useState, useCallback } from "react";
|
|
113
113
|
import { AfterAuth } from "./afterAuth.mjs";
|
|
114
114
|
import { MultiPlatform } from "multiplatform.one";
|
|
115
115
|
import { ReactKeycloakProvider } from "@bitspur/react-keycloak-web";
|
|
@@ -120,7 +120,7 @@ import { useRouter } from "next/router";
|
|
|
120
120
|
var logger = console;
|
|
121
121
|
function KeycloakProvider(_ref) {
|
|
122
122
|
var _query$idToken, _query$token, _query$refreshToken;
|
|
123
|
-
var children = _ref.children, cookies = _ref.cookies, debug = _ref.debug, keycloakConfig = _ref.keycloakConfig, keycloakInitOptions = _ref.keycloakInitOptions, loadingComponent = _ref.loadingComponent;
|
|
123
|
+
var children = _ref.children, cookies = _ref.cookies, debug = _ref.debug, keycloakConfig = _ref.keycloakConfig, keycloakInitOptions = _ref.keycloakInitOptions, loadingComponent = _ref.loadingComponent, onEvent = _ref.onEvent, onTokens = _ref.onTokens;
|
|
124
124
|
var authState = useAuthState();
|
|
125
125
|
var LoadingComponent = loadingComponent || function() {
|
|
126
126
|
return /* @__PURE__ */ React.createElement(React.Fragment, null, debug ? "authenticating" : null);
|
|
@@ -253,6 +253,17 @@ function KeycloakProvider(_ref) {
|
|
|
253
253
|
window.removeEventListener("message", messageCallback);
|
|
254
254
|
};
|
|
255
255
|
}, []);
|
|
256
|
+
var handleEvent = useCallback(function(eventType, error) {
|
|
257
|
+
if (error) {
|
|
258
|
+
if (typeof error === "string")
|
|
259
|
+
throw new Error(error);
|
|
260
|
+
var err = new Error(error.error);
|
|
261
|
+
err.errorDescription = error.error_description;
|
|
262
|
+
throw err;
|
|
263
|
+
}
|
|
264
|
+
if (onEvent)
|
|
265
|
+
onEvent(eventType, error);
|
|
266
|
+
}, []);
|
|
256
267
|
var keycloak = useMemo(function() {
|
|
257
268
|
return typeof window !== "undefined" && new Keycloak({
|
|
258
269
|
url: keycloakConfig.baseUrl,
|
|
@@ -283,23 +294,27 @@ function KeycloakProvider(_ref) {
|
|
|
283
294
|
return (
|
|
284
295
|
// @ts-ignore
|
|
285
296
|
/* @__PURE__ */ React.createElement(SSRKeycloakProvider, {
|
|
297
|
+
LoadingComponent: /* @__PURE__ */ React.createElement(LoadingComponent, null),
|
|
286
298
|
initOptions,
|
|
299
|
+
onEvent: handleEvent,
|
|
300
|
+
onTokens,
|
|
301
|
+
persistor: SSRCookies(cookies),
|
|
287
302
|
keycloakConfig: {
|
|
288
|
-
|
|
303
|
+
clientId: keycloakConfig.clientId,
|
|
289
304
|
realm: keycloakConfig.realm,
|
|
290
|
-
|
|
291
|
-
}
|
|
292
|
-
persistor: SSRCookies(cookies),
|
|
293
|
-
LoadingComponent: /* @__PURE__ */ React.createElement(LoadingComponent, null)
|
|
305
|
+
url: keycloakConfig.baseUrl
|
|
306
|
+
}
|
|
294
307
|
}, /* @__PURE__ */ React.createElement(AfterAuth, null, children))
|
|
295
308
|
);
|
|
296
309
|
}
|
|
297
310
|
if (!keycloak)
|
|
298
311
|
return /* @__PURE__ */ React.createElement(React.Fragment, null, children);
|
|
299
312
|
return /* @__PURE__ */ React.createElement(ReactKeycloakProvider, {
|
|
300
|
-
|
|
313
|
+
LoadingComponent: /* @__PURE__ */ React.createElement(LoadingComponent, null),
|
|
301
314
|
authClient: keycloak,
|
|
302
|
-
|
|
315
|
+
initOptions,
|
|
316
|
+
onEvent: handleEvent,
|
|
317
|
+
onTokens
|
|
303
318
|
}, /* @__PURE__ */ React.createElement(AfterAuth, null, children));
|
|
304
319
|
}
|
|
305
320
|
var defaultKeycloakInitOptions = {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/provider/keycloakProvider.tsx"],
|
|
4
|
-
"sourcesContent": ["function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _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) { _defineProperty(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; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/**\n * File: /auth/provider/keycloakProvider.tsx\n * Project: app\n * File Created: 08-11-2022 03:12:43\n * Author: Clay Risser\n * -----\n * Last Modified: 22-11-2022 18:07:46\n * Modified By: Clay Risser\n * -----\n * Risser Labs LLC (c) Copyright 2021 - 2022\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Keycloak from '@bitspur/keycloak-js';\nimport React, { useMemo, useEffect, useState } from 'react';\nimport { AfterAuth } from \"./afterAuth.mjs\";\nimport { MultiPlatform } from 'multiplatform.one';\nimport { ReactKeycloakProvider } from '@bitspur/react-keycloak-web';\nimport { SSRKeycloakProvider, SSRCookies } from '@bitspur/react-keycloak-ssr';\nimport { useAuthConfig } from \"../hooks/useAuthConfig.mjs\";\nimport { useAuthState } from \"../state/index.mjs\";\nimport { useRouter } from 'next/router';\nvar logger = console;\nexport function KeycloakProvider(_ref) {\n var _query$idToken, _query$token, _query$refreshToken;\n var children = _ref.children,\n cookies = _ref.cookies,\n debug = _ref.debug,\n keycloakConfig = _ref.keycloakConfig,\n keycloakInitOptions = _ref.keycloakInitOptions,\n loadingComponent = _ref.loadingComponent;\n var authState = useAuthState();\n var LoadingComponent = loadingComponent || function () {\n return /*#__PURE__*/React.createElement(React.Fragment, null, debug ? 'authenticating' : null);\n };\n var _ref2 = MultiPlatform.isNext ? useRouter() : {\n query: {}\n },\n query = _ref2.query;\n var authConfig = useAuthConfig();\n var _useState = useState('idToken' in query && (((_query$idToken = query.idToken) === null || _query$idToken === void 0 ? void 0 : _query$idToken.toString()) || true) || authConfig.persist && authState.idToken || false),\n _useState2 = _slicedToArray(_useState, 2),\n idToken = _useState2[0],\n setIdToken = _useState2[1];\n var _useState3 = useState('token' in query && (((_query$token = query.token) === null || _query$token === void 0 ? void 0 : _query$token.toString()) || true) || authConfig.persist && authState.token || false),\n _useState4 = _slicedToArray(_useState3, 2),\n token = _useState4[0],\n setToken = _useState4[1];\n var _useState5 = useState(authConfig.ensureFreshness && ('refreshToken' in query && (((_query$refreshToken = query.refreshToken) === null || _query$refreshToken === void 0 ? void 0 : _query$refreshToken.toString()) || true) || authConfig.persist && authState.refreshToken) || false),\n _useState6 = _slicedToArray(_useState5, 2),\n refreshToken = _useState6[0],\n setRefreshToken = _useState6[1];\n var explicitToken = 'idToken' in query || 'token' in query || 'refreshToken' in query;\n useEffect(function () {\n var _window2, _window2$ReactNativeW, _window3, _window3$parent;\n if (token !== true && refreshToken !== true && idToken !== true) return;\n if (debug) logger.debug('post message', {\n type: 'LOADED'\n });\n (authConfig.messageHandlerKeys || []).forEach(function (key) {\n var _window, _window$webkit, _window$webkit$messag, _window$webkit$messag2;\n (_window = window) === null || _window === void 0 ? void 0 : (_window$webkit = _window.webkit) === null || _window$webkit === void 0 ? void 0 : (_window$webkit$messag = _window$webkit.messageHandlers) === null || _window$webkit$messag === void 0 ? void 0 : (_window$webkit$messag2 = _window$webkit$messag[key]) === null || _window$webkit$messag2 === void 0 ? void 0 : _window$webkit$messag2.postMessage(JSON.stringify({\n type: 'LOADED'\n }));\n });\n (_window2 = window) === null || _window2 === void 0 ? void 0 : (_window2$ReactNativeW = _window2.ReactNativeWebView) === null || _window2$ReactNativeW === void 0 ? void 0 : _window2$ReactNativeW.postMessage(JSON.stringify({\n type: 'LOADED'\n }));\n (_window3 = window) === null || _window3 === void 0 ? void 0 : (_window3$parent = _window3.parent) === null || _window3$parent === void 0 ? void 0 : _window3$parent.postMessage(JSON.stringify({\n type: 'LOADED'\n }));\n }, []);\n useEffect(function () {\n if (token !== true) return;\n var messageCallback = function messageCallback(e) {\n var data = e === null || e === void 0 ? void 0 : e.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n var message = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'TOKEN' && message.payload) {\n if (debug) logger.debug('setting token', message.payload);\n setToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'TOKEN',\n payload: '<some_token>'\n });\n }\n window.addEventListener('message', messageCallback);\n return function () {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n useEffect(function () {\n if (idToken !== true) return;\n var messageCallback = function messageCallback(e) {\n var data = e === null || e === void 0 ? void 0 : e.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n var message = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'ID_TOKEN' && message.payload) {\n if (debug) logger.debug('setting id token', message.payload);\n setIdToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'ID_TOKEN',\n payload: '<some_id_token>'\n });\n }\n window.addEventListener('message', messageCallback);\n return function () {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n useEffect(function () {\n if (refreshToken !== true) return;\n var messageCallback = function messageCallback(e) {\n var data = e === null || e === void 0 ? void 0 : e.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n var message = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'REFRESH_TOKEN' && message.payload) {\n if (debug) logger.debug('setting refresh token', message.payload);\n setRefreshToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'REFRESH_TOKEN',\n payload: '<some_refresh_token>'\n });\n }\n window.addEventListener('message', messageCallback);\n return function () {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n var keycloak = useMemo(function () {\n return typeof window !== 'undefined' && new Keycloak({\n url: keycloakConfig.baseUrl,\n realm: keycloakConfig.realm,\n clientId: keycloakConfig.clientId\n });\n }, []);\n var initOptions = useMemo(function () {\n var initOptions = _objectSpread(_objectSpread({}, defaultKeycloakInitOptions), keycloakInitOptions);\n if (debug) initOptions.enableLogging = true;\n if (token && typeof token === 'string') {\n initOptions.token = token;\n if (idToken && typeof idToken === 'string') initOptions.idToken = idToken;\n if (refreshToken && typeof refreshToken === 'string') initOptions.refreshToken = refreshToken;\n if (explicitToken) {\n initOptions.checkLoginIframe = false;\n initOptions.onLoad = undefined;\n }\n }\n return initOptions;\n }, [keycloakInitOptions, token, refreshToken, idToken]);\n if (token === true || idToken === true || refreshToken === true) return /*#__PURE__*/React.createElement(LoadingComponent, null);\n if (cookies && authConfig.ssr) {\n return (\n /*#__PURE__*/\n // @ts-ignore\n React.createElement(SSRKeycloakProvider, {\n initOptions: initOptions,\n keycloakConfig: {\n url: keycloakConfig.baseUrl,\n realm: keycloakConfig.realm,\n clientId: keycloakConfig.clientId\n },\n persistor: SSRCookies(cookies),\n LoadingComponent: /*#__PURE__*/React.createElement(LoadingComponent, null)\n }, /*#__PURE__*/React.createElement(AfterAuth, null, children))\n );\n }\n if (!keycloak) return /*#__PURE__*/React.createElement(React.Fragment, null, children);\n return /*#__PURE__*/React.createElement(ReactKeycloakProvider, {\n initOptions: initOptions,\n authClient: keycloak,\n LoadingComponent: /*#__PURE__*/React.createElement(LoadingComponent, null)\n }, /*#__PURE__*/React.createElement(AfterAuth, null, children));\n}\nexport var defaultKeycloakInitOptions = {\n checkLoginIframe: true,\n checkLoginIframeInterval: 5,\n enableLogging: false,\n onLoad: 'check-sso',\n pkceMethod: 'S256'\n};"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _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) { _defineProperty(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; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/**\n * File: /auth/provider/keycloakProvider.tsx\n * Project: app\n * File Created: 08-11-2022 03:12:43\n * Author: Clay Risser\n * -----\n * Last Modified: 22-11-2022 18:07:46\n * Modified By: Clay Risser\n * -----\n * Risser Labs LLC (c) Copyright 2021 - 2022\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Keycloak from '@bitspur/keycloak-js';\nimport React, { useMemo, useEffect, useState, useCallback } from 'react';\nimport { AfterAuth } from \"./afterAuth.mjs\";\nimport { MultiPlatform } from 'multiplatform.one';\nimport { ReactKeycloakProvider } from '@bitspur/react-keycloak-web';\nimport { SSRKeycloakProvider, SSRCookies } from '@bitspur/react-keycloak-ssr';\nimport { useAuthConfig } from \"../hooks/useAuthConfig.mjs\";\nimport { useAuthState } from \"../state/index.mjs\";\nimport { useRouter } from 'next/router';\nvar logger = console;\nexport function KeycloakProvider(_ref) {\n var _query$idToken, _query$token, _query$refreshToken;\n var children = _ref.children,\n cookies = _ref.cookies,\n debug = _ref.debug,\n keycloakConfig = _ref.keycloakConfig,\n keycloakInitOptions = _ref.keycloakInitOptions,\n loadingComponent = _ref.loadingComponent,\n onEvent = _ref.onEvent,\n onTokens = _ref.onTokens;\n var authState = useAuthState();\n var LoadingComponent = loadingComponent || function () {\n return /*#__PURE__*/React.createElement(React.Fragment, null, debug ? 'authenticating' : null);\n };\n var _ref2 = MultiPlatform.isNext ? useRouter() : {\n query: {}\n },\n query = _ref2.query;\n var authConfig = useAuthConfig();\n var _useState = useState('idToken' in query && (((_query$idToken = query.idToken) === null || _query$idToken === void 0 ? void 0 : _query$idToken.toString()) || true) || authConfig.persist && authState.idToken || false),\n _useState2 = _slicedToArray(_useState, 2),\n idToken = _useState2[0],\n setIdToken = _useState2[1];\n var _useState3 = useState('token' in query && (((_query$token = query.token) === null || _query$token === void 0 ? void 0 : _query$token.toString()) || true) || authConfig.persist && authState.token || false),\n _useState4 = _slicedToArray(_useState3, 2),\n token = _useState4[0],\n setToken = _useState4[1];\n var _useState5 = useState(authConfig.ensureFreshness && ('refreshToken' in query && (((_query$refreshToken = query.refreshToken) === null || _query$refreshToken === void 0 ? void 0 : _query$refreshToken.toString()) || true) || authConfig.persist && authState.refreshToken) || false),\n _useState6 = _slicedToArray(_useState5, 2),\n refreshToken = _useState6[0],\n setRefreshToken = _useState6[1];\n var explicitToken = 'idToken' in query || 'token' in query || 'refreshToken' in query;\n useEffect(function () {\n var _window2, _window2$ReactNativeW, _window3, _window3$parent;\n if (token !== true && refreshToken !== true && idToken !== true) return;\n if (debug) logger.debug('post message', {\n type: 'LOADED'\n });\n (authConfig.messageHandlerKeys || []).forEach(function (key) {\n var _window, _window$webkit, _window$webkit$messag, _window$webkit$messag2;\n (_window = window) === null || _window === void 0 ? void 0 : (_window$webkit = _window.webkit) === null || _window$webkit === void 0 ? void 0 : (_window$webkit$messag = _window$webkit.messageHandlers) === null || _window$webkit$messag === void 0 ? void 0 : (_window$webkit$messag2 = _window$webkit$messag[key]) === null || _window$webkit$messag2 === void 0 ? void 0 : _window$webkit$messag2.postMessage(JSON.stringify({\n type: 'LOADED'\n }));\n });\n (_window2 = window) === null || _window2 === void 0 ? void 0 : (_window2$ReactNativeW = _window2.ReactNativeWebView) === null || _window2$ReactNativeW === void 0 ? void 0 : _window2$ReactNativeW.postMessage(JSON.stringify({\n type: 'LOADED'\n }));\n (_window3 = window) === null || _window3 === void 0 ? void 0 : (_window3$parent = _window3.parent) === null || _window3$parent === void 0 ? void 0 : _window3$parent.postMessage(JSON.stringify({\n type: 'LOADED'\n }));\n }, []);\n useEffect(function () {\n if (token !== true) return;\n var messageCallback = function messageCallback(e) {\n var data = e === null || e === void 0 ? void 0 : e.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n var message = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'TOKEN' && message.payload) {\n if (debug) logger.debug('setting token', message.payload);\n setToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'TOKEN',\n payload: '<some_token>'\n });\n }\n window.addEventListener('message', messageCallback);\n return function () {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n useEffect(function () {\n if (idToken !== true) return;\n var messageCallback = function messageCallback(e) {\n var data = e === null || e === void 0 ? void 0 : e.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n var message = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'ID_TOKEN' && message.payload) {\n if (debug) logger.debug('setting id token', message.payload);\n setIdToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'ID_TOKEN',\n payload: '<some_id_token>'\n });\n }\n window.addEventListener('message', messageCallback);\n return function () {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n useEffect(function () {\n if (refreshToken !== true) return;\n var messageCallback = function messageCallback(e) {\n var data = e === null || e === void 0 ? void 0 : e.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n var message = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'REFRESH_TOKEN' && message.payload) {\n if (debug) logger.debug('setting refresh token', message.payload);\n setRefreshToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'REFRESH_TOKEN',\n payload: '<some_refresh_token>'\n });\n }\n window.addEventListener('message', messageCallback);\n return function () {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n var handleEvent = useCallback(function (eventType, error) {\n if (error) {\n if (typeof error === 'string') throw new Error(error);\n var err = new Error(error.error);\n err.errorDescription = error.error_description;\n throw err;\n }\n if (onEvent) onEvent(eventType, error);\n }, []);\n var keycloak = useMemo(function () {\n return typeof window !== 'undefined' && new Keycloak({\n url: keycloakConfig.baseUrl,\n realm: keycloakConfig.realm,\n clientId: keycloakConfig.clientId\n });\n }, []);\n var initOptions = useMemo(function () {\n var initOptions = _objectSpread(_objectSpread({}, defaultKeycloakInitOptions), keycloakInitOptions);\n if (debug) initOptions.enableLogging = true;\n if (token && typeof token === 'string') {\n initOptions.token = token;\n if (idToken && typeof idToken === 'string') initOptions.idToken = idToken;\n if (refreshToken && typeof refreshToken === 'string') initOptions.refreshToken = refreshToken;\n if (explicitToken) {\n initOptions.checkLoginIframe = false;\n initOptions.onLoad = undefined;\n }\n }\n return initOptions;\n }, [keycloakInitOptions, token, refreshToken, idToken]);\n if (token === true || idToken === true || refreshToken === true) return /*#__PURE__*/React.createElement(LoadingComponent, null);\n if (cookies && authConfig.ssr) {\n return (\n /*#__PURE__*/\n // @ts-ignore\n React.createElement(SSRKeycloakProvider, {\n LoadingComponent: /*#__PURE__*/React.createElement(LoadingComponent, null),\n initOptions: initOptions,\n onEvent: handleEvent,\n onTokens: onTokens,\n persistor: SSRCookies(cookies),\n keycloakConfig: {\n clientId: keycloakConfig.clientId,\n realm: keycloakConfig.realm,\n url: keycloakConfig.baseUrl\n }\n }, /*#__PURE__*/React.createElement(AfterAuth, null, children))\n );\n }\n if (!keycloak) return /*#__PURE__*/React.createElement(React.Fragment, null, children);\n return /*#__PURE__*/React.createElement(ReactKeycloakProvider, {\n LoadingComponent: /*#__PURE__*/React.createElement(LoadingComponent, null),\n authClient: keycloak,\n initOptions: initOptions,\n onEvent: handleEvent,\n onTokens: onTokens\n }, /*#__PURE__*/React.createElement(AfterAuth, null, children));\n}\nexport var defaultKeycloakInitOptions = {\n checkLoginIframe: true,\n checkLoginIframeInterval: 5,\n enableLogging: false,\n onLoad: 'check-sso',\n pkceMethod: 'S256'\n};"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["obj", "messageCallback", "initOptions"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Keycloak from "@bitspur/keycloak-js";
|
|
2
|
-
import { useMemo, useEffect, useState } from "react";
|
|
2
|
+
import { useMemo, useEffect, useState, useCallback } from "react";
|
|
3
3
|
import { AfterAuth } from "./afterAuth";
|
|
4
4
|
import { MultiPlatform } from "multiplatform.one";
|
|
5
5
|
import { ReactKeycloakProvider } from "@bitspur/react-keycloak-web";
|
|
@@ -14,7 +14,9 @@ function KeycloakProvider({
|
|
|
14
14
|
debug,
|
|
15
15
|
keycloakConfig,
|
|
16
16
|
keycloakInitOptions,
|
|
17
|
-
loadingComponent
|
|
17
|
+
loadingComponent,
|
|
18
|
+
onEvent,
|
|
19
|
+
onTokens
|
|
18
20
|
}) {
|
|
19
21
|
const authState = useAuthState();
|
|
20
22
|
const LoadingComponent = loadingComponent || (() => <>{debug ? "authenticating" : null}</>);
|
|
@@ -140,6 +142,17 @@ function KeycloakProvider({
|
|
|
140
142
|
window.removeEventListener("message", messageCallback);
|
|
141
143
|
};
|
|
142
144
|
}, []);
|
|
145
|
+
const handleEvent = useCallback((eventType, error) => {
|
|
146
|
+
if (error) {
|
|
147
|
+
if (typeof error === "string")
|
|
148
|
+
throw new Error(error);
|
|
149
|
+
const err = new Error(error.error);
|
|
150
|
+
err.errorDescription = error.error_description;
|
|
151
|
+
throw err;
|
|
152
|
+
}
|
|
153
|
+
if (onEvent)
|
|
154
|
+
onEvent(eventType, error);
|
|
155
|
+
}, []);
|
|
143
156
|
const keycloak = useMemo(
|
|
144
157
|
() => typeof window !== "undefined" && new Keycloak({
|
|
145
158
|
url: keycloakConfig.baseUrl,
|
|
@@ -174,20 +187,28 @@ function KeycloakProvider({
|
|
|
174
187
|
return (
|
|
175
188
|
// @ts-ignore
|
|
176
189
|
<SSRKeycloakProvider
|
|
190
|
+
LoadingComponent={<LoadingComponent />}
|
|
177
191
|
initOptions={initOptions}
|
|
192
|
+
onEvent={handleEvent}
|
|
193
|
+
onTokens={onTokens}
|
|
194
|
+
persistor={SSRCookies(cookies)}
|
|
178
195
|
keycloakConfig={{
|
|
179
|
-
|
|
196
|
+
clientId: keycloakConfig.clientId,
|
|
180
197
|
realm: keycloakConfig.realm,
|
|
181
|
-
|
|
198
|
+
url: keycloakConfig.baseUrl
|
|
182
199
|
}}
|
|
183
|
-
persistor={SSRCookies(cookies)}
|
|
184
|
-
LoadingComponent={<LoadingComponent />}
|
|
185
200
|
><AfterAuth>{children}</AfterAuth></SSRKeycloakProvider>
|
|
186
201
|
);
|
|
187
202
|
}
|
|
188
203
|
if (!keycloak)
|
|
189
204
|
return <>{children}</>;
|
|
190
|
-
return <ReactKeycloakProvider
|
|
205
|
+
return <ReactKeycloakProvider
|
|
206
|
+
LoadingComponent={<LoadingComponent />}
|
|
207
|
+
authClient={keycloak}
|
|
208
|
+
initOptions={initOptions}
|
|
209
|
+
onEvent={handleEvent}
|
|
210
|
+
onTokens={onTokens}
|
|
211
|
+
><AfterAuth>{children}</AfterAuth></ReactKeycloakProvider>;
|
|
191
212
|
}
|
|
192
213
|
const defaultKeycloakInitOptions = {
|
|
193
214
|
checkLoginIframe: true,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/provider/keycloakProvider.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * File: /auth/provider/keycloakProvider.tsx\n * Project: app\n * File Created: 08-11-2022 03:12:43\n * Author: Clay Risser\n * -----\n * Last Modified: 22-11-2022 18:07:46\n * Modified By: Clay Risser\n * -----\n * Risser Labs LLC (c) Copyright 2021 - 2022\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Keycloak from '@bitspur/keycloak-js';\nimport React, { useMemo, useEffect, useState } from 'react';\nimport type { KeycloakInitOptions } from '@bitspur/keycloak-js';\nimport type { ReactNode, ComponentType } from 'react';\nimport { AfterAuth } from './afterAuth';\nimport { MultiPlatform } from 'multiplatform.one';\nimport { ReactKeycloakProvider } from '@bitspur/react-keycloak-web';\nimport { SSRKeycloakProvider, SSRCookies } from '@bitspur/react-keycloak-ssr';\nimport { useAuthConfig } from '../hooks/useAuthConfig';\nimport { useAuthState } from '../state';\nimport { useRouter } from 'next/router';\n\nexport interface KeycloakProviderProps {\n children: ReactNode;\n cookies?: unknown;\n debug?: boolean;\n disabled?: boolean;\n keycloakConfig: KeycloakConfig;\n keycloakInitOptions?: KeycloakInitOptions;\n loadingComponent?: ComponentType;\n}\n\nconst logger = console;\n\nexport function KeycloakProvider({\n children,\n cookies,\n debug,\n keycloakConfig,\n keycloakInitOptions,\n loadingComponent,\n}: KeycloakProviderProps) {\n const authState = useAuthState();\n const LoadingComponent = loadingComponent || (() => <>{debug ? 'authenticating' : null}</>);\n const { query } = MultiPlatform.isNext ? useRouter() : { query: {} };\n const authConfig = useAuthConfig();\n const [idToken, setIdToken] = useState<string | boolean>(\n ('idToken' in query && (query.idToken?.toString() || true)) || (authConfig.persist && authState.idToken) || false,\n );\n const [token, setToken] = useState<string | boolean>(\n ('token' in query && (query.token?.toString() || true)) || (authConfig.persist && authState.token) || false,\n );\n const [refreshToken, setRefreshToken] = useState<string | boolean>(\n (authConfig.ensureFreshness &&\n (('refreshToken' in query && (query.refreshToken?.toString() || true)) ||\n (authConfig.persist && authState.refreshToken))) ||\n false,\n );\n const explicitToken = 'idToken' in query || 'token' in query || 'refreshToken' in query;\n\n useEffect(() => {\n if (token !== true && refreshToken !== true && idToken !== true) return;\n if (debug) logger.debug('post message', { type: 'LOADED' });\n (authConfig.messageHandlerKeys || []).forEach((key: string) => {\n window?.webkit?.messageHandlers?.[key]?.postMessage(JSON.stringify({ type: 'LOADED' }));\n });\n window?.ReactNativeWebView?.postMessage(JSON.stringify({ type: 'LOADED' }));\n window?.parent?.postMessage(JSON.stringify({ type: 'LOADED' }));\n }, []);\n\n useEffect(() => {\n if (token !== true) return;\n const messageCallback = (e: MessageEvent<any>) => {\n let data = e?.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n const message: MessageSchema = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'TOKEN' && message.payload) {\n if (debug) logger.debug('setting token', message.payload);\n setToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'TOKEN',\n payload: '<some_token>',\n });\n }\n window.addEventListener('message', messageCallback);\n return () => {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n\n useEffect(() => {\n if (idToken !== true) return;\n const messageCallback = (e: MessageEvent<any>) => {\n let data = e?.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n const message: MessageSchema = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'ID_TOKEN' && message.payload) {\n if (debug) logger.debug('setting id token', message.payload);\n setIdToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'ID_TOKEN',\n payload: '<some_id_token>',\n });\n }\n window.addEventListener('message', messageCallback);\n return () => {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n\n useEffect(() => {\n if (refreshToken !== true) return;\n const messageCallback = (e: MessageEvent<any>) => {\n let data = e?.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n const message: MessageSchema = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'REFRESH_TOKEN' && message.payload) {\n if (debug) logger.debug('setting refresh token', message.payload);\n setRefreshToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'REFRESH_TOKEN',\n payload: '<some_refresh_token>',\n });\n }\n window.addEventListener('message', messageCallback);\n return () => {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n\n const keycloak = useMemo(\n () =>\n typeof window !== 'undefined' &&\n new Keycloak({\n url: keycloakConfig.baseUrl,\n realm: keycloakConfig.realm,\n clientId: keycloakConfig.clientId,\n }),\n [],\n );\n\n const initOptions = useMemo(() => {\n const initOptions = {\n ...defaultKeycloakInitOptions,\n ...keycloakInitOptions,\n };\n if (debug) initOptions.enableLogging = true;\n if (token && typeof token === 'string') {\n initOptions.token = token;\n if (idToken && typeof idToken === 'string') initOptions.idToken = idToken;\n if (refreshToken && typeof refreshToken === 'string') initOptions.refreshToken = refreshToken;\n if (explicitToken) {\n initOptions.checkLoginIframe = false;\n initOptions.onLoad = undefined;\n }\n }\n return initOptions;\n }, [keycloakInitOptions, token, refreshToken, idToken]);\n\n if (token === true || idToken === true || refreshToken === true) return <LoadingComponent />;\n if (cookies && authConfig.ssr) {\n return (\n // @ts-ignore\n <SSRKeycloakProvider\n initOptions={initOptions}\n keycloakConfig={{\n
|
|
5
|
-
"mappings": "AAwBA,OAAO,cAAc;AACrB,SAAgB,SAAS,WAAW,
|
|
4
|
+
"sourcesContent": ["/**\n * File: /auth/provider/keycloakProvider.tsx\n * Project: app\n * File Created: 08-11-2022 03:12:43\n * Author: Clay Risser\n * -----\n * Last Modified: 22-11-2022 18:07:46\n * Modified By: Clay Risser\n * -----\n * Risser Labs LLC (c) Copyright 2021 - 2022\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Keycloak from '@bitspur/keycloak-js';\nimport React, { useMemo, useEffect, useState, useCallback } from 'react';\nimport type { AuthClientEvent, AuthClientError, AuthClientTokens } from '@bitspur/react-keycloak-core';\nimport type { KeycloakInitOptions } from '@bitspur/keycloak-js';\nimport type { ReactNode, ComponentType } from 'react';\nimport { AfterAuth } from './afterAuth';\nimport { MultiPlatform } from 'multiplatform.one';\nimport { ReactKeycloakProvider } from '@bitspur/react-keycloak-web';\nimport { SSRKeycloakProvider, SSRCookies } from '@bitspur/react-keycloak-ssr';\nimport { useAuthConfig } from '../hooks/useAuthConfig';\nimport { useAuthState } from '../state';\nimport { useRouter } from 'next/router';\n\nexport interface KeycloakProviderProps {\n children: ReactNode;\n cookies?: unknown;\n debug?: boolean;\n disabled?: boolean;\n keycloakConfig: KeycloakConfig;\n keycloakInitOptions?: KeycloakInitOptions;\n loadingComponent?: ComponentType;\n onEvent?: (eventType: AuthClientEvent, error?: AuthClientError) => void;\n onTokens?: (tokens: AuthClientTokens) => void;\n}\n\nconst logger = console;\n\nexport function KeycloakProvider({\n children,\n cookies,\n debug,\n keycloakConfig,\n keycloakInitOptions,\n loadingComponent,\n onEvent,\n onTokens,\n}: KeycloakProviderProps) {\n const authState = useAuthState();\n const LoadingComponent = loadingComponent || (() => <>{debug ? 'authenticating' : null}</>);\n const { query } = MultiPlatform.isNext ? useRouter() : { query: {} };\n const authConfig = useAuthConfig();\n const [idToken, setIdToken] = useState<string | boolean>(\n ('idToken' in query && (query.idToken?.toString() || true)) || (authConfig.persist && authState.idToken) || false,\n );\n const [token, setToken] = useState<string | boolean>(\n ('token' in query && (query.token?.toString() || true)) || (authConfig.persist && authState.token) || false,\n );\n const [refreshToken, setRefreshToken] = useState<string | boolean>(\n (authConfig.ensureFreshness &&\n (('refreshToken' in query && (query.refreshToken?.toString() || true)) ||\n (authConfig.persist && authState.refreshToken))) ||\n false,\n );\n const explicitToken = 'idToken' in query || 'token' in query || 'refreshToken' in query;\n\n useEffect(() => {\n if (token !== true && refreshToken !== true && idToken !== true) return;\n if (debug) logger.debug('post message', { type: 'LOADED' });\n (authConfig.messageHandlerKeys || []).forEach((key: string) => {\n window?.webkit?.messageHandlers?.[key]?.postMessage(JSON.stringify({ type: 'LOADED' }));\n });\n window?.ReactNativeWebView?.postMessage(JSON.stringify({ type: 'LOADED' }));\n window?.parent?.postMessage(JSON.stringify({ type: 'LOADED' }));\n }, []);\n\n useEffect(() => {\n if (token !== true) return;\n const messageCallback = (e: MessageEvent<any>) => {\n let data = e?.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n const message: MessageSchema = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'TOKEN' && message.payload) {\n if (debug) logger.debug('setting token', message.payload);\n setToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'TOKEN',\n payload: '<some_token>',\n });\n }\n window.addEventListener('message', messageCallback);\n return () => {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n\n useEffect(() => {\n if (idToken !== true) return;\n const messageCallback = (e: MessageEvent<any>) => {\n let data = e?.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n const message: MessageSchema = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'ID_TOKEN' && message.payload) {\n if (debug) logger.debug('setting id token', message.payload);\n setIdToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'ID_TOKEN',\n payload: '<some_id_token>',\n });\n }\n window.addEventListener('message', messageCallback);\n return () => {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n\n useEffect(() => {\n if (refreshToken !== true) return;\n const messageCallback = (e: MessageEvent<any>) => {\n let data = e?.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n const message: MessageSchema = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'REFRESH_TOKEN' && message.payload) {\n if (debug) logger.debug('setting refresh token', message.payload);\n setRefreshToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'REFRESH_TOKEN',\n payload: '<some_refresh_token>',\n });\n }\n window.addEventListener('message', messageCallback);\n return () => {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n\n const handleEvent = useCallback((eventType: AuthClientEvent, error?: AuthClientError) => {\n if (error) {\n if (typeof error === 'string') throw new Error(error);\n const err: Error & { errorDescription?: string } = new Error(error.error);\n err.errorDescription = error.error_description;\n throw err;\n }\n if (onEvent) onEvent(eventType, error);\n }, []);\n\n const keycloak = useMemo(\n () =>\n typeof window !== 'undefined' &&\n new Keycloak({\n url: keycloakConfig.baseUrl,\n realm: keycloakConfig.realm,\n clientId: keycloakConfig.clientId,\n }),\n [],\n );\n\n const initOptions = useMemo(() => {\n const initOptions = {\n ...defaultKeycloakInitOptions,\n ...keycloakInitOptions,\n };\n if (debug) initOptions.enableLogging = true;\n if (token && typeof token === 'string') {\n initOptions.token = token;\n if (idToken && typeof idToken === 'string') initOptions.idToken = idToken;\n if (refreshToken && typeof refreshToken === 'string') initOptions.refreshToken = refreshToken;\n if (explicitToken) {\n initOptions.checkLoginIframe = false;\n initOptions.onLoad = undefined;\n }\n }\n return initOptions;\n }, [keycloakInitOptions, token, refreshToken, idToken]);\n\n if (token === true || idToken === true || refreshToken === true) return <LoadingComponent />;\n if (cookies && authConfig.ssr) {\n return (\n // @ts-ignore\n <SSRKeycloakProvider\n LoadingComponent={<LoadingComponent />}\n initOptions={initOptions}\n onEvent={handleEvent}\n onTokens={onTokens}\n persistor={SSRCookies(cookies)}\n keycloakConfig={{\n clientId: keycloakConfig.clientId,\n realm: keycloakConfig.realm,\n url: keycloakConfig.baseUrl,\n }}\n >\n <AfterAuth>{children}</AfterAuth>\n </SSRKeycloakProvider>\n );\n }\n if (!keycloak) return <>{children}</>;\n return (\n <ReactKeycloakProvider\n LoadingComponent={<LoadingComponent />}\n authClient={keycloak}\n initOptions={initOptions}\n onEvent={handleEvent}\n onTokens={onTokens}\n >\n <AfterAuth>{children}</AfterAuth>\n </ReactKeycloakProvider>\n );\n}\n\nexport interface KeycloakConfig {\n clientId: string;\n realm: string;\n scheme?: string;\n baseUrl: string;\n}\n\nexport const defaultKeycloakInitOptions: KeycloakInitOptions = {\n checkLoginIframe: true,\n checkLoginIframeInterval: 5,\n enableLogging: false,\n onLoad: 'check-sso',\n pkceMethod: 'S256',\n};\n\nexport interface MessageSchema {\n type: string;\n payload?: string;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["initOptions"]
|
|
7
7
|
}
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
* See the License for the specific language governing permissions and
|
|
22
22
|
* limitations under the License.
|
|
23
23
|
*/
|
|
24
|
+
import type { AuthClientEvent, AuthClientError, AuthClientTokens } from '@bitspur/react-keycloak-core';
|
|
24
25
|
import type { KeycloakInitOptions } from '@bitspur/keycloak-js';
|
|
25
26
|
import type { ReactNode, ComponentType } from 'react';
|
|
26
27
|
export interface KeycloakProviderProps {
|
|
@@ -31,8 +32,10 @@ export interface KeycloakProviderProps {
|
|
|
31
32
|
keycloakConfig: KeycloakConfig;
|
|
32
33
|
keycloakInitOptions?: KeycloakInitOptions;
|
|
33
34
|
loadingComponent?: ComponentType;
|
|
35
|
+
onEvent?: (eventType: AuthClientEvent, error?: AuthClientError) => void;
|
|
36
|
+
onTokens?: (tokens: AuthClientTokens) => void;
|
|
34
37
|
}
|
|
35
|
-
export declare function KeycloakProvider({ children, cookies, debug, keycloakConfig, keycloakInitOptions, loadingComponent, }: KeycloakProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
38
|
+
export declare function KeycloakProvider({ children, cookies, debug, keycloakConfig, keycloakInitOptions, loadingComponent, onEvent, onTokens, }: KeycloakProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
36
39
|
export interface KeycloakConfig {
|
|
37
40
|
clientId: string;
|
|
38
41
|
realm: string;
|
|
@@ -63,7 +63,9 @@ function KeycloakProvider({
|
|
|
63
63
|
debug,
|
|
64
64
|
keycloakConfig,
|
|
65
65
|
keycloakInitOptions,
|
|
66
|
-
loadingComponent
|
|
66
|
+
loadingComponent,
|
|
67
|
+
onEvent,
|
|
68
|
+
onTokens
|
|
67
69
|
}) {
|
|
68
70
|
var _a, _b, _c;
|
|
69
71
|
const authState = (0, import_state.useAuthState)();
|
|
@@ -192,6 +194,17 @@ function KeycloakProvider({
|
|
|
192
194
|
window.removeEventListener("message", messageCallback);
|
|
193
195
|
};
|
|
194
196
|
}, []);
|
|
197
|
+
const handleEvent = (0, import_react.useCallback)((eventType, error) => {
|
|
198
|
+
if (error) {
|
|
199
|
+
if (typeof error === "string")
|
|
200
|
+
throw new Error(error);
|
|
201
|
+
const err = new Error(error.error);
|
|
202
|
+
err.errorDescription = error.error_description;
|
|
203
|
+
throw err;
|
|
204
|
+
}
|
|
205
|
+
if (onEvent)
|
|
206
|
+
onEvent(eventType, error);
|
|
207
|
+
}, []);
|
|
195
208
|
const keycloak = (0, import_react.useMemo)(
|
|
196
209
|
() => typeof window !== "undefined" && new import_keycloak_js.default({
|
|
197
210
|
url: keycloakConfig.baseUrl,
|
|
@@ -225,14 +238,16 @@ function KeycloakProvider({
|
|
|
225
238
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
226
239
|
import_react_keycloak_ssr.SSRKeycloakProvider,
|
|
227
240
|
{
|
|
241
|
+
LoadingComponent: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoadingComponent, {}),
|
|
228
242
|
initOptions,
|
|
243
|
+
onEvent: handleEvent,
|
|
244
|
+
onTokens,
|
|
245
|
+
persistor: (0, import_react_keycloak_ssr.SSRCookies)(cookies),
|
|
229
246
|
keycloakConfig: {
|
|
230
|
-
|
|
247
|
+
clientId: keycloakConfig.clientId,
|
|
231
248
|
realm: keycloakConfig.realm,
|
|
232
|
-
|
|
249
|
+
url: keycloakConfig.baseUrl
|
|
233
250
|
},
|
|
234
|
-
persistor: (0, import_react_keycloak_ssr.SSRCookies)(cookies),
|
|
235
|
-
LoadingComponent: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoadingComponent, {}),
|
|
236
251
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_afterAuth.AfterAuth, { children })
|
|
237
252
|
}
|
|
238
253
|
)
|
|
@@ -240,7 +255,17 @@ function KeycloakProvider({
|
|
|
240
255
|
}
|
|
241
256
|
if (!keycloak)
|
|
242
257
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children });
|
|
243
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
258
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
259
|
+
import_react_keycloak_web.ReactKeycloakProvider,
|
|
260
|
+
{
|
|
261
|
+
LoadingComponent: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoadingComponent, {}),
|
|
262
|
+
authClient: keycloak,
|
|
263
|
+
initOptions,
|
|
264
|
+
onEvent: handleEvent,
|
|
265
|
+
onTokens,
|
|
266
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_afterAuth.AfterAuth, { children })
|
|
267
|
+
}
|
|
268
|
+
);
|
|
244
269
|
}
|
|
245
270
|
const defaultKeycloakInitOptions = {
|
|
246
271
|
checkLoginIframe: true,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/provider/keycloakProvider.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * File: /auth/provider/keycloakProvider.tsx\n * Project: app\n * File Created: 08-11-2022 03:12:43\n * Author: Clay Risser\n * -----\n * Last Modified: 22-11-2022 18:07:46\n * Modified By: Clay Risser\n * -----\n * Risser Labs LLC (c) Copyright 2021 - 2022\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Keycloak from '@bitspur/keycloak-js';\nimport React, { useMemo, useEffect, useState } from 'react';\nimport type { KeycloakInitOptions } from '@bitspur/keycloak-js';\nimport type { ReactNode, ComponentType } from 'react';\nimport { AfterAuth } from './afterAuth';\nimport { MultiPlatform } from 'multiplatform.one';\nimport { ReactKeycloakProvider } from '@bitspur/react-keycloak-web';\nimport { SSRKeycloakProvider, SSRCookies } from '@bitspur/react-keycloak-ssr';\nimport { useAuthConfig } from '../hooks/useAuthConfig';\nimport { useAuthState } from '../state';\nimport { useRouter } from 'next/router';\n\nexport interface KeycloakProviderProps {\n children: ReactNode;\n cookies?: unknown;\n debug?: boolean;\n disabled?: boolean;\n keycloakConfig: KeycloakConfig;\n keycloakInitOptions?: KeycloakInitOptions;\n loadingComponent?: ComponentType;\n}\n\nconst logger = console;\n\nexport function KeycloakProvider({\n children,\n cookies,\n debug,\n keycloakConfig,\n keycloakInitOptions,\n loadingComponent,\n}: KeycloakProviderProps) {\n const authState = useAuthState();\n const LoadingComponent = loadingComponent || (() => <>{debug ? 'authenticating' : null}</>);\n const { query } = MultiPlatform.isNext ? useRouter() : { query: {} };\n const authConfig = useAuthConfig();\n const [idToken, setIdToken] = useState<string | boolean>(\n ('idToken' in query && (query.idToken?.toString() || true)) || (authConfig.persist && authState.idToken) || false,\n );\n const [token, setToken] = useState<string | boolean>(\n ('token' in query && (query.token?.toString() || true)) || (authConfig.persist && authState.token) || false,\n );\n const [refreshToken, setRefreshToken] = useState<string | boolean>(\n (authConfig.ensureFreshness &&\n (('refreshToken' in query && (query.refreshToken?.toString() || true)) ||\n (authConfig.persist && authState.refreshToken))) ||\n false,\n );\n const explicitToken = 'idToken' in query || 'token' in query || 'refreshToken' in query;\n\n useEffect(() => {\n if (token !== true && refreshToken !== true && idToken !== true) return;\n if (debug) logger.debug('post message', { type: 'LOADED' });\n (authConfig.messageHandlerKeys || []).forEach((key: string) => {\n window?.webkit?.messageHandlers?.[key]?.postMessage(JSON.stringify({ type: 'LOADED' }));\n });\n window?.ReactNativeWebView?.postMessage(JSON.stringify({ type: 'LOADED' }));\n window?.parent?.postMessage(JSON.stringify({ type: 'LOADED' }));\n }, []);\n\n useEffect(() => {\n if (token !== true) return;\n const messageCallback = (e: MessageEvent<any>) => {\n let data = e?.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n const message: MessageSchema = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'TOKEN' && message.payload) {\n if (debug) logger.debug('setting token', message.payload);\n setToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'TOKEN',\n payload: '<some_token>',\n });\n }\n window.addEventListener('message', messageCallback);\n return () => {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n\n useEffect(() => {\n if (idToken !== true) return;\n const messageCallback = (e: MessageEvent<any>) => {\n let data = e?.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n const message: MessageSchema = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'ID_TOKEN' && message.payload) {\n if (debug) logger.debug('setting id token', message.payload);\n setIdToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'ID_TOKEN',\n payload: '<some_id_token>',\n });\n }\n window.addEventListener('message', messageCallback);\n return () => {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n\n useEffect(() => {\n if (refreshToken !== true) return;\n const messageCallback = (e: MessageEvent<any>) => {\n let data = e?.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n const message: MessageSchema = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'REFRESH_TOKEN' && message.payload) {\n if (debug) logger.debug('setting refresh token', message.payload);\n setRefreshToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'REFRESH_TOKEN',\n payload: '<some_refresh_token>',\n });\n }\n window.addEventListener('message', messageCallback);\n return () => {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n\n const keycloak = useMemo(\n () =>\n typeof window !== 'undefined' &&\n new Keycloak({\n url: keycloakConfig.baseUrl,\n realm: keycloakConfig.realm,\n clientId: keycloakConfig.clientId,\n }),\n [],\n );\n\n const initOptions = useMemo(() => {\n const initOptions = {\n ...defaultKeycloakInitOptions,\n ...keycloakInitOptions,\n };\n if (debug) initOptions.enableLogging = true;\n if (token && typeof token === 'string') {\n initOptions.token = token;\n if (idToken && typeof idToken === 'string') initOptions.idToken = idToken;\n if (refreshToken && typeof refreshToken === 'string') initOptions.refreshToken = refreshToken;\n if (explicitToken) {\n initOptions.checkLoginIframe = false;\n initOptions.onLoad = undefined;\n }\n }\n return initOptions;\n }, [keycloakInitOptions, token, refreshToken, idToken]);\n\n if (token === true || idToken === true || refreshToken === true) return <LoadingComponent />;\n if (cookies && authConfig.ssr) {\n return (\n // @ts-ignore\n <SSRKeycloakProvider\n initOptions={initOptions}\n keycloakConfig={{\n
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"sourcesContent": ["/**\n * File: /auth/provider/keycloakProvider.tsx\n * Project: app\n * File Created: 08-11-2022 03:12:43\n * Author: Clay Risser\n * -----\n * Last Modified: 22-11-2022 18:07:46\n * Modified By: Clay Risser\n * -----\n * Risser Labs LLC (c) Copyright 2021 - 2022\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Keycloak from '@bitspur/keycloak-js';\nimport React, { useMemo, useEffect, useState, useCallback } from 'react';\nimport type { AuthClientEvent, AuthClientError, AuthClientTokens } from '@bitspur/react-keycloak-core';\nimport type { KeycloakInitOptions } from '@bitspur/keycloak-js';\nimport type { ReactNode, ComponentType } from 'react';\nimport { AfterAuth } from './afterAuth';\nimport { MultiPlatform } from 'multiplatform.one';\nimport { ReactKeycloakProvider } from '@bitspur/react-keycloak-web';\nimport { SSRKeycloakProvider, SSRCookies } from '@bitspur/react-keycloak-ssr';\nimport { useAuthConfig } from '../hooks/useAuthConfig';\nimport { useAuthState } from '../state';\nimport { useRouter } from 'next/router';\n\nexport interface KeycloakProviderProps {\n children: ReactNode;\n cookies?: unknown;\n debug?: boolean;\n disabled?: boolean;\n keycloakConfig: KeycloakConfig;\n keycloakInitOptions?: KeycloakInitOptions;\n loadingComponent?: ComponentType;\n onEvent?: (eventType: AuthClientEvent, error?: AuthClientError) => void;\n onTokens?: (tokens: AuthClientTokens) => void;\n}\n\nconst logger = console;\n\nexport function KeycloakProvider({\n children,\n cookies,\n debug,\n keycloakConfig,\n keycloakInitOptions,\n loadingComponent,\n onEvent,\n onTokens,\n}: KeycloakProviderProps) {\n const authState = useAuthState();\n const LoadingComponent = loadingComponent || (() => <>{debug ? 'authenticating' : null}</>);\n const { query } = MultiPlatform.isNext ? useRouter() : { query: {} };\n const authConfig = useAuthConfig();\n const [idToken, setIdToken] = useState<string | boolean>(\n ('idToken' in query && (query.idToken?.toString() || true)) || (authConfig.persist && authState.idToken) || false,\n );\n const [token, setToken] = useState<string | boolean>(\n ('token' in query && (query.token?.toString() || true)) || (authConfig.persist && authState.token) || false,\n );\n const [refreshToken, setRefreshToken] = useState<string | boolean>(\n (authConfig.ensureFreshness &&\n (('refreshToken' in query && (query.refreshToken?.toString() || true)) ||\n (authConfig.persist && authState.refreshToken))) ||\n false,\n );\n const explicitToken = 'idToken' in query || 'token' in query || 'refreshToken' in query;\n\n useEffect(() => {\n if (token !== true && refreshToken !== true && idToken !== true) return;\n if (debug) logger.debug('post message', { type: 'LOADED' });\n (authConfig.messageHandlerKeys || []).forEach((key: string) => {\n window?.webkit?.messageHandlers?.[key]?.postMessage(JSON.stringify({ type: 'LOADED' }));\n });\n window?.ReactNativeWebView?.postMessage(JSON.stringify({ type: 'LOADED' }));\n window?.parent?.postMessage(JSON.stringify({ type: 'LOADED' }));\n }, []);\n\n useEffect(() => {\n if (token !== true) return;\n const messageCallback = (e: MessageEvent<any>) => {\n let data = e?.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n const message: MessageSchema = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'TOKEN' && message.payload) {\n if (debug) logger.debug('setting token', message.payload);\n setToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'TOKEN',\n payload: '<some_token>',\n });\n }\n window.addEventListener('message', messageCallback);\n return () => {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n\n useEffect(() => {\n if (idToken !== true) return;\n const messageCallback = (e: MessageEvent<any>) => {\n let data = e?.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n const message: MessageSchema = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'ID_TOKEN' && message.payload) {\n if (debug) logger.debug('setting id token', message.payload);\n setIdToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'ID_TOKEN',\n payload: '<some_id_token>',\n });\n }\n window.addEventListener('message', messageCallback);\n return () => {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n\n useEffect(() => {\n if (refreshToken !== true) return;\n const messageCallback = (e: MessageEvent<any>) => {\n let data = e?.data;\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (err) {}\n }\n if (debug) logger.debug('received message', data);\n const message: MessageSchema = data;\n if (!message.type) return;\n if (message.type.toUpperCase() === 'REFRESH_TOKEN' && message.payload) {\n if (debug) logger.debug('setting refresh token', message.payload);\n setRefreshToken(message.payload);\n }\n };\n if (debug) {\n logger.debug('listening for message', {\n type: 'REFRESH_TOKEN',\n payload: '<some_refresh_token>',\n });\n }\n window.addEventListener('message', messageCallback);\n return () => {\n window.removeEventListener('message', messageCallback);\n };\n }, []);\n\n const handleEvent = useCallback((eventType: AuthClientEvent, error?: AuthClientError) => {\n if (error) {\n if (typeof error === 'string') throw new Error(error);\n const err: Error & { errorDescription?: string } = new Error(error.error);\n err.errorDescription = error.error_description;\n throw err;\n }\n if (onEvent) onEvent(eventType, error);\n }, []);\n\n const keycloak = useMemo(\n () =>\n typeof window !== 'undefined' &&\n new Keycloak({\n url: keycloakConfig.baseUrl,\n realm: keycloakConfig.realm,\n clientId: keycloakConfig.clientId,\n }),\n [],\n );\n\n const initOptions = useMemo(() => {\n const initOptions = {\n ...defaultKeycloakInitOptions,\n ...keycloakInitOptions,\n };\n if (debug) initOptions.enableLogging = true;\n if (token && typeof token === 'string') {\n initOptions.token = token;\n if (idToken && typeof idToken === 'string') initOptions.idToken = idToken;\n if (refreshToken && typeof refreshToken === 'string') initOptions.refreshToken = refreshToken;\n if (explicitToken) {\n initOptions.checkLoginIframe = false;\n initOptions.onLoad = undefined;\n }\n }\n return initOptions;\n }, [keycloakInitOptions, token, refreshToken, idToken]);\n\n if (token === true || idToken === true || refreshToken === true) return <LoadingComponent />;\n if (cookies && authConfig.ssr) {\n return (\n // @ts-ignore\n <SSRKeycloakProvider\n LoadingComponent={<LoadingComponent />}\n initOptions={initOptions}\n onEvent={handleEvent}\n onTokens={onTokens}\n persistor={SSRCookies(cookies)}\n keycloakConfig={{\n clientId: keycloakConfig.clientId,\n realm: keycloakConfig.realm,\n url: keycloakConfig.baseUrl,\n }}\n >\n <AfterAuth>{children}</AfterAuth>\n </SSRKeycloakProvider>\n );\n }\n if (!keycloak) return <>{children}</>;\n return (\n <ReactKeycloakProvider\n LoadingComponent={<LoadingComponent />}\n authClient={keycloak}\n initOptions={initOptions}\n onEvent={handleEvent}\n onTokens={onTokens}\n >\n <AfterAuth>{children}</AfterAuth>\n </ReactKeycloakProvider>\n );\n}\n\nexport interface KeycloakConfig {\n clientId: string;\n realm: string;\n scheme?: string;\n baseUrl: string;\n}\n\nexport const defaultKeycloakInitOptions: KeycloakInitOptions = {\n checkLoginIframe: true,\n checkLoginIframeInterval: 5,\n enableLogging: false,\n onLoad: 'check-sso',\n pkceMethod: 'S256',\n};\n\nexport interface MessageSchema {\n type: string;\n payload?: string;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["_a", "_b", "_c", "Keycloak", "initOptions"]
|
|
7
7
|
}
|