@multiplatform.one/keycloak 0.7.16 → 0.7.17

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.
Files changed (145) hide show
  1. package/lib/@types/expoKeycloakAuth.d.d.mts +25 -0
  2. package/lib/@types/expoKeycloakAuth.d.d.ts +25 -0
  3. package/lib/@types/expoKeycloakAuth.d.js +1 -0
  4. package/lib/@types/expoKeycloakAuth.d.mjs +0 -0
  5. package/lib/Authenticated.d.mts +33 -0
  6. package/lib/Authenticated.d.ts +33 -0
  7. package/lib/Authenticated.js +20 -0
  8. package/lib/Authenticated.mjs +20 -0
  9. package/lib/authConfig.d.mts +12 -0
  10. package/lib/authConfig.d.ts +12 -0
  11. package/lib/authConfig.js +9 -0
  12. package/lib/authConfig.mjs +9 -0
  13. package/lib/chunk-2BKS6UM5.js +51 -0
  14. package/lib/chunk-2BSUCVXL.js +50 -0
  15. package/lib/chunk-2L5TXBDK.mjs +7 -0
  16. package/lib/chunk-2VDDEPLF.js +27 -0
  17. package/lib/chunk-32AVT4GA.js +9 -0
  18. package/lib/chunk-3ZTSLDX7.js +13 -0
  19. package/lib/chunk-6F4PWJZI.js +1 -0
  20. package/lib/chunk-6FRYV4MK.mjs +27 -0
  21. package/lib/chunk-A2V2S4HP.js +22 -0
  22. package/lib/chunk-BUZONXAW.js +1 -0
  23. package/lib/chunk-CGLMLNUS.mjs +245 -0
  24. package/lib/chunk-FU4CT24B.mjs +32 -0
  25. package/lib/chunk-HH32BME2.mjs +0 -0
  26. package/lib/chunk-HTWZLBA4.mjs +13 -0
  27. package/lib/chunk-I5FNGKQ6.js +16 -0
  28. package/lib/chunk-JAFUI2JQ.mjs +9 -0
  29. package/lib/chunk-JPQI72HR.mjs +0 -0
  30. package/lib/chunk-L3HTVJ4B.mjs +13 -0
  31. package/lib/chunk-MDAAMGTE.js +1 -0
  32. package/lib/chunk-NH335CDK.js +32 -0
  33. package/lib/chunk-OA5TSQWZ.mjs +50 -0
  34. package/lib/chunk-OAUYHIWG.mjs +0 -0
  35. package/lib/chunk-OBB23GPX.mjs +0 -0
  36. package/lib/chunk-OZLV3US5.js +245 -0
  37. package/lib/chunk-P57PW2II.js +11 -0
  38. package/lib/chunk-TUJRPTZE.js +13 -0
  39. package/lib/chunk-UESWAK47.mjs +0 -0
  40. package/lib/chunk-UH4K7HGE.mjs +163 -0
  41. package/lib/chunk-UKSHA3X3.mjs +16 -0
  42. package/lib/chunk-VS4M7GMO.js +1 -0
  43. package/lib/chunk-WBQAMGXK.mjs +0 -0
  44. package/lib/chunk-WMH347OL.mjs +22 -0
  45. package/lib/chunk-WS4IMGVL.js +1 -0
  46. package/lib/chunk-X53FOCXA.js +28 -0
  47. package/lib/chunk-Y23BWOII.mjs +51 -0
  48. package/lib/chunk-Y5MS3XVZ.mjs +28 -0
  49. package/lib/chunk-YACGLW5Q.js +7 -0
  50. package/lib/chunk-ZCBD6HWK.js +1 -0
  51. package/lib/chunk-ZFXKCRJC.mjs +11 -0
  52. package/lib/chunk-ZW4GP2I5.js +163 -0
  53. package/lib/hooks/index.d.mts +5 -0
  54. package/lib/hooks/index.d.ts +5 -0
  55. package/lib/hooks/index.js +19 -0
  56. package/lib/hooks/index.mjs +19 -0
  57. package/lib/hooks/useAuthConfig.d.mts +6 -0
  58. package/lib/hooks/useAuthConfig.d.ts +6 -0
  59. package/lib/hooks/useAuthConfig.js +8 -0
  60. package/lib/hooks/useAuthConfig.mjs +8 -0
  61. package/lib/hooks/useTokensFromQuery/index.d.mts +3 -0
  62. package/lib/hooks/useTokensFromQuery/index.d.ts +3 -0
  63. package/lib/hooks/useTokensFromQuery/index.js +7 -0
  64. package/lib/hooks/useTokensFromQuery/index.mjs +7 -0
  65. package/lib/hooks/useTokensFromQuery/index.native.d.mts +3 -0
  66. package/lib/hooks/useTokensFromQuery/index.native.d.ts +3 -0
  67. package/lib/hooks/useTokensFromQuery/index.native.js +7 -0
  68. package/lib/hooks/useTokensFromQuery/index.native.mjs +7 -0
  69. package/lib/hooks/useTokensFromState.d.mts +3 -0
  70. package/lib/hooks/useTokensFromState.d.ts +3 -0
  71. package/lib/hooks/useTokensFromState.js +9 -0
  72. package/lib/hooks/useTokensFromState.mjs +9 -0
  73. package/lib/index.d.mts +16 -0
  74. package/lib/index.d.ts +16 -0
  75. package/lib/index.js +62 -0
  76. package/lib/index.mjs +62 -0
  77. package/lib/keycloak/context.d.mts +12 -0
  78. package/lib/keycloak/context.d.ts +12 -0
  79. package/lib/keycloak/context.js +7 -0
  80. package/lib/keycloak/context.mjs +7 -0
  81. package/lib/keycloak/index.d.mts +7 -0
  82. package/lib/keycloak/index.d.ts +7 -0
  83. package/lib/keycloak/index.js +14 -0
  84. package/lib/keycloak/index.mjs +14 -0
  85. package/lib/keycloak/keycloak.d.mts +37 -0
  86. package/lib/keycloak/keycloak.d.ts +37 -0
  87. package/lib/keycloak/keycloak.js +13 -0
  88. package/lib/keycloak/keycloak.mjs +13 -0
  89. package/lib/keycloak/keycloak.native.d.mts +33 -0
  90. package/lib/keycloak/keycloak.native.d.ts +33 -0
  91. package/lib/keycloak/keycloak.native.js +134 -0
  92. package/lib/keycloak/keycloak.native.mjs +134 -0
  93. package/lib/provider/AfterAuth.d.mts +28 -0
  94. package/lib/provider/AfterAuth.d.ts +28 -0
  95. package/lib/provider/AfterAuth.js +18 -0
  96. package/lib/provider/AfterAuth.mjs +18 -0
  97. package/lib/provider/AuthProvider/AuthProvider.d.mts +37 -0
  98. package/lib/provider/AuthProvider/AuthProvider.d.ts +37 -0
  99. package/lib/provider/AuthProvider/AuthProvider.js +19 -0
  100. package/lib/provider/AuthProvider/AuthProvider.mjs +19 -0
  101. package/lib/provider/AuthProvider/AuthProvider.native.d.mts +29 -0
  102. package/lib/provider/AuthProvider/AuthProvider.native.d.ts +29 -0
  103. package/lib/provider/AuthProvider/AuthProvider.native.js +25 -0
  104. package/lib/provider/AuthProvider/AuthProvider.native.mjs +25 -0
  105. package/lib/provider/AuthProvider/index.d.mts +4 -0
  106. package/lib/provider/AuthProvider/index.d.ts +4 -0
  107. package/lib/provider/AuthProvider/index.js +20 -0
  108. package/lib/provider/AuthProvider/index.mjs +20 -0
  109. package/lib/provider/KeycloakProvider.d.mts +34 -0
  110. package/lib/provider/KeycloakProvider.d.ts +34 -0
  111. package/lib/provider/KeycloakProvider.js +21 -0
  112. package/lib/provider/KeycloakProvider.mjs +21 -0
  113. package/lib/provider/index.d.mts +8 -0
  114. package/lib/provider/index.d.ts +8 -0
  115. package/lib/provider/index.js +28 -0
  116. package/lib/provider/index.mjs +28 -0
  117. package/lib/routes.d.mts +28 -0
  118. package/lib/routes.d.ts +28 -0
  119. package/lib/routes.js +127 -0
  120. package/lib/routes.mjs +127 -0
  121. package/lib/session/index.d.mts +3 -0
  122. package/lib/session/index.d.ts +3 -0
  123. package/lib/session/index.js +10 -0
  124. package/lib/session/index.mjs +10 -0
  125. package/lib/session/session.d.mts +18 -0
  126. package/lib/session/session.d.ts +18 -0
  127. package/lib/session/session.js +9 -0
  128. package/lib/session/session.mjs +9 -0
  129. package/lib/session/session.native.d.mts +8 -0
  130. package/lib/session/session.native.d.ts +8 -0
  131. package/lib/session/session.native.js +13 -0
  132. package/lib/session/session.native.mjs +13 -0
  133. package/lib/state.d.mts +12 -0
  134. package/lib/state.d.ts +12 -0
  135. package/lib/state.js +9 -0
  136. package/lib/state.mjs +9 -0
  137. package/lib/token.d.mts +17 -0
  138. package/lib/token.d.ts +17 -0
  139. package/lib/token.js +9 -0
  140. package/lib/token.mjs +9 -0
  141. package/lib/types.d.mts +20 -0
  142. package/lib/types.d.ts +20 -0
  143. package/lib/types.js +1 -0
  144. package/lib/types.mjs +1 -0
  145. package/package.json +3 -3
@@ -0,0 +1,245 @@
1
+ import {
2
+ AfterAuth
3
+ } from "./chunk-Y23BWOII.mjs";
4
+ import {
5
+ useAuthConfig
6
+ } from "./chunk-HTWZLBA4.mjs";
7
+ import {
8
+ Keycloak
9
+ } from "./chunk-UH4K7HGE.mjs";
10
+ import {
11
+ KeycloakContext
12
+ } from "./chunk-2L5TXBDK.mjs";
13
+ import {
14
+ persist,
15
+ useAuthState
16
+ } from "./chunk-WMH347OL.mjs";
17
+ import {
18
+ validToken
19
+ } from "./chunk-6FRYV4MK.mjs";
20
+
21
+ // src/provider/AuthProvider/AuthProvider.tsx
22
+ import KeycloakClient from "keycloak-js";
23
+ import React, { useEffect, useMemo, useState } from "react";
24
+ import { MultiPlatform } from "multiplatform.one";
25
+ import { SessionProvider } from "next-auth/react";
26
+ import { useRouter } from "next/router";
27
+ var logger = console;
28
+ function AuthProvider({ children, sessionProvider, keycloakInitOptions, keycloakConfig }) {
29
+ const { debug, messageHandlerKeys } = useAuthConfig();
30
+ const { query } = MultiPlatform.isNext ? useRouter() : { query: {} };
31
+ const authState = useAuthState();
32
+ const [keycloak, setKeycloak] = useState();
33
+ const [refreshToken, setRefreshToken] = useState(
34
+ validToken(
35
+ MultiPlatform.isIframe ? "refreshToken" in query && (query.refreshToken?.toString() || true) || persist && authState.refreshToken || false : void 0
36
+ )
37
+ );
38
+ const [token, setToken] = useState(
39
+ validToken(
40
+ MultiPlatform.isIframe ? "token" in query && (query.token?.toString() || true) || persist && authState.token || false : void 0,
41
+ refreshToken
42
+ )
43
+ );
44
+ const [idToken, setIdToken] = useState(
45
+ validToken(
46
+ MultiPlatform.isIframe ? "idToken" in query && (query.idToken?.toString() || true) || persist && authState.idToken || false : void 0,
47
+ refreshToken
48
+ )
49
+ );
50
+ useEffect(() => {
51
+ if (token !== true && refreshToken !== true && idToken !== true)
52
+ return;
53
+ if (debug)
54
+ logger.debug("post message", JSON.stringify({ type: "LOADED" }));
55
+ (messageHandlerKeys || []).forEach((key) => {
56
+ window?.webkit?.messageHandlers?.[key]?.postMessage(JSON.stringify({ type: "LOADED" }));
57
+ });
58
+ window?.ReactNativeWebView?.postMessage(JSON.stringify({ type: "LOADED" }));
59
+ window?.parent?.postMessage(JSON.stringify({ type: "LOADED" }));
60
+ }, []);
61
+ useEffect(() => {
62
+ if (refreshToken !== true)
63
+ return;
64
+ const messageCallback = (e) => {
65
+ let data = e?.data || null;
66
+ if (typeof data === "string") {
67
+ try {
68
+ data = JSON.parse(data);
69
+ } catch (err) {
70
+ }
71
+ }
72
+ if (debug)
73
+ logger.debug("received message", JSON.stringify(data));
74
+ const message = data;
75
+ if (!message.type)
76
+ return;
77
+ if (message.type.toUpperCase() === "REFRESH_TOKEN" && message.payload) {
78
+ if (debug)
79
+ logger.debug("setting refresh token", message.payload);
80
+ setRefreshToken(validToken(message.payload));
81
+ window.removeEventListener("message", messageCallback);
82
+ }
83
+ };
84
+ if (debug) {
85
+ logger.debug(
86
+ "listening for message",
87
+ JSON.stringify({
88
+ type: "REFRESH_TOKEN",
89
+ payload: "<some_refresh_token>"
90
+ })
91
+ );
92
+ }
93
+ window.addEventListener("message", messageCallback);
94
+ return () => {
95
+ window.removeEventListener("message", messageCallback);
96
+ };
97
+ }, []);
98
+ useEffect(() => {
99
+ if (token !== true)
100
+ return;
101
+ const messageCallback = (e) => {
102
+ let data = e?.data || null;
103
+ if (typeof data === "string") {
104
+ try {
105
+ data = JSON.parse(data);
106
+ } catch (err) {
107
+ }
108
+ }
109
+ if (debug)
110
+ logger.debug("received message", JSON.stringify(data));
111
+ const message = data;
112
+ if (!message.type)
113
+ return;
114
+ if (message.type.toUpperCase() === "TOKEN" && message.payload) {
115
+ if (debug)
116
+ logger.debug("setting token", message.payload);
117
+ setToken(validToken(message.payload, refreshToken));
118
+ window.removeEventListener("message", messageCallback);
119
+ }
120
+ };
121
+ if (debug) {
122
+ logger.debug(
123
+ "listening for message",
124
+ JSON.stringify({
125
+ type: "TOKEN",
126
+ payload: "<some_token>"
127
+ })
128
+ );
129
+ }
130
+ window.addEventListener("message", messageCallback);
131
+ return () => {
132
+ window.removeEventListener("message", messageCallback);
133
+ };
134
+ }, []);
135
+ useEffect(() => {
136
+ if (idToken !== true)
137
+ return;
138
+ const messageCallback = (e) => {
139
+ let data = e?.data || null;
140
+ if (typeof data === "string") {
141
+ try {
142
+ data = JSON.parse(data);
143
+ } catch (err) {
144
+ }
145
+ }
146
+ if (debug)
147
+ logger.debug("received message", JSON.stringify(data));
148
+ const message = data;
149
+ if (!message.type)
150
+ return;
151
+ if (message.type.toUpperCase() === "ID_TOKEN" && message.payload) {
152
+ if (debug)
153
+ logger.debug("setting id token", message.payload);
154
+ setIdToken(validToken(message.payload, refreshToken));
155
+ window.removeEventListener("message", messageCallback);
156
+ }
157
+ };
158
+ if (debug) {
159
+ logger.debug(
160
+ "listening for message",
161
+ JSON.stringify({
162
+ type: "ID_TOKEN",
163
+ payload: "<some_id_token>"
164
+ })
165
+ );
166
+ }
167
+ window.addEventListener("message", messageCallback);
168
+ return () => {
169
+ window.removeEventListener("message", messageCallback);
170
+ };
171
+ }, []);
172
+ const keycloakClient = useMemo(
173
+ () => MultiPlatform.isIframe && keycloakConfig ? new KeycloakClient({
174
+ url: keycloakConfig.url,
175
+ realm: keycloakConfig.realm,
176
+ clientId: keycloakConfig.clientId
177
+ }) : void 0,
178
+ [keycloakInitOptions, keycloakConfig, token, refreshToken, idToken]
179
+ );
180
+ const initOptions = useMemo(() => {
181
+ if (!MultiPlatform.isIframe)
182
+ return;
183
+ const initOptions2 = {
184
+ ...defaultKeycloakInitOptions,
185
+ ...keycloakInitOptions
186
+ };
187
+ if (debug)
188
+ initOptions2.enableLogging = true;
189
+ if (token && typeof token === "string") {
190
+ initOptions2.token = token;
191
+ initOptions2.timeSkew = 0;
192
+ if (idToken && typeof idToken === "string")
193
+ initOptions2.idToken = idToken;
194
+ if (refreshToken && typeof refreshToken === "string")
195
+ initOptions2.refreshToken = refreshToken;
196
+ }
197
+ if (typeof window !== "undefined" && window.self !== window.top || token && !refreshToken) {
198
+ initOptions2.checkLoginIframe = false;
199
+ initOptions2.flow = "implicit";
200
+ initOptions2.onLoad = void 0;
201
+ }
202
+ return initOptions2;
203
+ }, [keycloakInitOptions, token, idToken, refreshToken]);
204
+ useEffect(() => {
205
+ function onError() {
206
+ if (keycloakClient && initOptions)
207
+ setKeycloak(new Keycloak(keycloakClient));
208
+ }
209
+ function onUpdate() {
210
+ if (keycloakClient && initOptions)
211
+ setKeycloak(new Keycloak(keycloakClient));
212
+ }
213
+ if (keycloakClient && initOptions) {
214
+ (async () => {
215
+ keycloakClient.onAuthError = onError;
216
+ keycloakClient.onAuthLogout = onUpdate;
217
+ keycloakClient.onAuthRefreshError = onError;
218
+ keycloakClient.onAuthRefreshSuccess = onUpdate;
219
+ keycloakClient.onAuthSuccess = onUpdate;
220
+ keycloakClient.onReady = onUpdate;
221
+ keycloakClient.onTokenExpired = async () => {
222
+ try {
223
+ await keycloakClient.updateToken(5);
224
+ } catch (err) {
225
+ setKeycloak(new Keycloak());
226
+ }
227
+ };
228
+ const authenticated = await keycloakClient.init(initOptions);
229
+ setKeycloak(new Keycloak(authenticated ? keycloakClient : void 0));
230
+ })();
231
+ }
232
+ }, []);
233
+ return /* @__PURE__ */ React.createElement(SessionProvider, { ...sessionProvider }, /* @__PURE__ */ React.createElement(KeycloakContext.Provider, { value: keycloak }, /* @__PURE__ */ React.createElement(AfterAuth, null, children)));
234
+ }
235
+ var defaultKeycloakInitOptions = {
236
+ checkLoginIframe: true,
237
+ checkLoginIframeInterval: 5,
238
+ enableLogging: false,
239
+ onLoad: "check-sso",
240
+ pkceMethod: "S256"
241
+ };
242
+
243
+ export {
244
+ AuthProvider
245
+ };
@@ -0,0 +1,32 @@
1
+ // src/session/session.ts
2
+ import { MultiPlatform } from "multiplatform.one";
3
+ import { useSession as useNextSession, getSession as getNextSession } from "next-auth/react";
4
+ var _getServerSession;
5
+ async function getSession() {
6
+ if (MultiPlatform.isServer) {
7
+ if (typeof _getServerSession === "function")
8
+ return _getServerSession();
9
+ const getSession2 = (await import("next-auth")).getServerSession;
10
+ _getServerSession = () => getSession2();
11
+ return _getServerSession();
12
+ }
13
+ return getNextSession();
14
+ }
15
+ var useSession = (options) => {
16
+ return {};
17
+ };
18
+ if (MultiPlatform.isNext) {
19
+ useSession = (options) => {
20
+ const nextSession = useNextSession(options);
21
+ return {
22
+ update: nextSession.update,
23
+ status: nextSession.status,
24
+ session: nextSession.data
25
+ };
26
+ };
27
+ }
28
+
29
+ export {
30
+ getSession,
31
+ useSession
32
+ };
File without changes
@@ -0,0 +1,13 @@
1
+ import {
2
+ AuthConfigContext
3
+ } from "./chunk-JAFUI2JQ.mjs";
4
+
5
+ // src/hooks/useAuthConfig.ts
6
+ import { useContext } from "react";
7
+ function useAuthConfig() {
8
+ return useContext(AuthConfigContext);
9
+ }
10
+
11
+ export {
12
+ useAuthConfig
13
+ };
@@ -0,0 +1,16 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkA2V2S4HPjs = require('./chunk-A2V2S4HP.js');
4
+
5
+
6
+ var _chunk2VDDEPLFjs = require('./chunk-2VDDEPLF.js');
7
+
8
+ // src/hooks/useTokensFromState.ts
9
+ function useTokensFromState() {
10
+ const authState = _chunkA2V2S4HPjs.useAuthState.call(void 0, );
11
+ return !!_chunk2VDDEPLFjs.validToken.call(void 0, authState.token, authState.refreshToken);
12
+ }
13
+
14
+
15
+
16
+ exports.useTokensFromState = useTokensFromState;
@@ -0,0 +1,9 @@
1
+ // src/authConfig.ts
2
+ import { createContext } from "react";
3
+ var defaultAuthConfig = {};
4
+ var AuthConfigContext = createContext(defaultAuthConfig);
5
+
6
+ export {
7
+ defaultAuthConfig,
8
+ AuthConfigContext
9
+ };
File without changes
@@ -0,0 +1,13 @@
1
+ // src/hooks/useTokensFromQuery/index.ts
2
+ import { MultiPlatform } from "multiplatform.one";
3
+ import { useRouter } from "next/router";
4
+ function useTokensFromQuery() {
5
+ if (!MultiPlatform.isIframe)
6
+ return false;
7
+ const { query } = MultiPlatform.isNext ? useRouter() : { query: {} };
8
+ return "idToken" in query || "token" in query || "refreshToken" in query;
9
+ }
10
+
11
+ export {
12
+ useTokensFromQuery
13
+ };
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,32 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }// src/session/session.ts
2
+ var _multiplatformone = require('multiplatform.one');
3
+ var _react = require('next-auth/react');
4
+ var _getServerSession;
5
+ async function getSession() {
6
+ if (_multiplatformone.MultiPlatform.isServer) {
7
+ if (typeof _getServerSession === "function")
8
+ return _getServerSession();
9
+ const getSession2 = (await Promise.resolve().then(() => _interopRequireWildcard(require("next-auth")))).getServerSession;
10
+ _getServerSession = () => getSession2();
11
+ return _getServerSession();
12
+ }
13
+ return _react.getSession.call(void 0, );
14
+ }
15
+ var useSession = (options) => {
16
+ return {};
17
+ };
18
+ if (_multiplatformone.MultiPlatform.isNext) {
19
+ useSession = exports.useSession = (options) => {
20
+ const nextSession = _react.useSession.call(void 0, options);
21
+ return {
22
+ update: nextSession.update,
23
+ status: nextSession.status,
24
+ session: nextSession.data
25
+ };
26
+ };
27
+ }
28
+
29
+
30
+
31
+
32
+ exports.getSession = getSession; exports.useSession = useSession;
@@ -0,0 +1,50 @@
1
+ import {
2
+ useTokensFromQuery
3
+ } from "./chunk-L3HTVJ4B.mjs";
4
+ import {
5
+ useAuthConfig
6
+ } from "./chunk-HTWZLBA4.mjs";
7
+ import {
8
+ useTokensFromState
9
+ } from "./chunk-UKSHA3X3.mjs";
10
+ import {
11
+ useKeycloak
12
+ } from "./chunk-UH4K7HGE.mjs";
13
+
14
+ // src/Authenticated.tsx
15
+ import React, { useEffect } from "react";
16
+ import { MultiPlatform } from "multiplatform.one";
17
+ function Authenticated({ children, disabled, loggedOutComponent, loadingComponent }) {
18
+ const authConfig = useAuthConfig();
19
+ const keycloak = useKeycloak();
20
+ const tokensFromQuery = useTokensFromQuery();
21
+ const tokensFromState = useTokensFromState();
22
+ useEffect(() => {
23
+ if (!keycloak || MultiPlatform.isIframe || MultiPlatform.isServer || keycloak.authenticated || tokensFromQuery || tokensFromState) {
24
+ return;
25
+ }
26
+ keycloak.login({
27
+ redirectUri: authConfig.loginRedirectUri
28
+ });
29
+ }, [keycloak]);
30
+ if (typeof disabled === "undefined")
31
+ disabled = authConfig.disabled;
32
+ if (disabled)
33
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, children);
34
+ if (typeof keycloak === "undefined") {
35
+ const LoadingComponent = loadingComponent;
36
+ return LoadingComponent ? /* @__PURE__ */ React.createElement(LoadingComponent, null) : /* @__PURE__ */ React.createElement(React.Fragment, null, authConfig.debug ? "loading" : null);
37
+ }
38
+ if (keycloak.authenticated)
39
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, children);
40
+ const LoggedOutComponent = loggedOutComponent;
41
+ return LoggedOutComponent ? /* @__PURE__ */ React.createElement(LoggedOutComponent, null) : /* @__PURE__ */ React.createElement(React.Fragment, null, authConfig.debug ? "not authenticated" : null);
42
+ }
43
+ function withAuthenticated(Component) {
44
+ return (props) => /* @__PURE__ */ React.createElement(Authenticated, null, /* @__PURE__ */ React.createElement(Component, { ...props }));
45
+ }
46
+
47
+ export {
48
+ Authenticated,
49
+ withAuthenticated
50
+ };
File without changes
File without changes
@@ -0,0 +1,245 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+ var _chunk2BKS6UM5js = require('./chunk-2BKS6UM5.js');
4
+
5
+
6
+ var _chunk3ZTSLDX7js = require('./chunk-3ZTSLDX7.js');
7
+
8
+
9
+ var _chunkZW4GP2I5js = require('./chunk-ZW4GP2I5.js');
10
+
11
+
12
+ var _chunkYACGLW5Qjs = require('./chunk-YACGLW5Q.js');
13
+
14
+
15
+
16
+ var _chunkA2V2S4HPjs = require('./chunk-A2V2S4HP.js');
17
+
18
+
19
+ var _chunk2VDDEPLFjs = require('./chunk-2VDDEPLF.js');
20
+
21
+ // src/provider/AuthProvider/AuthProvider.tsx
22
+ var _keycloakjs = require('keycloak-js'); var _keycloakjs2 = _interopRequireDefault(_keycloakjs);
23
+ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
24
+ var _multiplatformone = require('multiplatform.one');
25
+ var _react3 = require('next-auth/react');
26
+ var _router = require('next/router');
27
+ var logger = console;
28
+ function AuthProvider({ children, sessionProvider, keycloakInitOptions, keycloakConfig }) {
29
+ const { debug, messageHandlerKeys } = _chunk3ZTSLDX7js.useAuthConfig.call(void 0, );
30
+ const { query } = _multiplatformone.MultiPlatform.isNext ? _router.useRouter.call(void 0, ) : { query: {} };
31
+ const authState = _chunkA2V2S4HPjs.useAuthState.call(void 0, );
32
+ const [keycloak, setKeycloak] = _react.useState.call(void 0, );
33
+ const [refreshToken, setRefreshToken] = _react.useState.call(void 0,
34
+ _chunk2VDDEPLFjs.validToken.call(void 0,
35
+ _multiplatformone.MultiPlatform.isIframe ? "refreshToken" in query && (_optionalChain([query, 'access', _ => _.refreshToken, 'optionalAccess', _2 => _2.toString, 'call', _3 => _3()]) || true) || _chunkA2V2S4HPjs.persist && authState.refreshToken || false : void 0
36
+ )
37
+ );
38
+ const [token, setToken] = _react.useState.call(void 0,
39
+ _chunk2VDDEPLFjs.validToken.call(void 0,
40
+ _multiplatformone.MultiPlatform.isIframe ? "token" in query && (_optionalChain([query, 'access', _4 => _4.token, 'optionalAccess', _5 => _5.toString, 'call', _6 => _6()]) || true) || _chunkA2V2S4HPjs.persist && authState.token || false : void 0,
41
+ refreshToken
42
+ )
43
+ );
44
+ const [idToken, setIdToken] = _react.useState.call(void 0,
45
+ _chunk2VDDEPLFjs.validToken.call(void 0,
46
+ _multiplatformone.MultiPlatform.isIframe ? "idToken" in query && (_optionalChain([query, 'access', _7 => _7.idToken, 'optionalAccess', _8 => _8.toString, 'call', _9 => _9()]) || true) || _chunkA2V2S4HPjs.persist && authState.idToken || false : void 0,
47
+ refreshToken
48
+ )
49
+ );
50
+ _react.useEffect.call(void 0, () => {
51
+ if (token !== true && refreshToken !== true && idToken !== true)
52
+ return;
53
+ if (debug)
54
+ logger.debug("post message", JSON.stringify({ type: "LOADED" }));
55
+ (messageHandlerKeys || []).forEach((key) => {
56
+ _optionalChain([window, 'optionalAccess', _10 => _10.webkit, 'optionalAccess', _11 => _11.messageHandlers, 'optionalAccess', _12 => _12[key], 'optionalAccess', _13 => _13.postMessage, 'call', _14 => _14(JSON.stringify({ type: "LOADED" }))]);
57
+ });
58
+ _optionalChain([window, 'optionalAccess', _15 => _15.ReactNativeWebView, 'optionalAccess', _16 => _16.postMessage, 'call', _17 => _17(JSON.stringify({ type: "LOADED" }))]);
59
+ _optionalChain([window, 'optionalAccess', _18 => _18.parent, 'optionalAccess', _19 => _19.postMessage, 'call', _20 => _20(JSON.stringify({ type: "LOADED" }))]);
60
+ }, []);
61
+ _react.useEffect.call(void 0, () => {
62
+ if (refreshToken !== true)
63
+ return;
64
+ const messageCallback = (e) => {
65
+ let data = _optionalChain([e, 'optionalAccess', _21 => _21.data]) || null;
66
+ if (typeof data === "string") {
67
+ try {
68
+ data = JSON.parse(data);
69
+ } catch (err) {
70
+ }
71
+ }
72
+ if (debug)
73
+ logger.debug("received message", JSON.stringify(data));
74
+ const message = data;
75
+ if (!message.type)
76
+ return;
77
+ if (message.type.toUpperCase() === "REFRESH_TOKEN" && message.payload) {
78
+ if (debug)
79
+ logger.debug("setting refresh token", message.payload);
80
+ setRefreshToken(_chunk2VDDEPLFjs.validToken.call(void 0, message.payload));
81
+ window.removeEventListener("message", messageCallback);
82
+ }
83
+ };
84
+ if (debug) {
85
+ logger.debug(
86
+ "listening for message",
87
+ JSON.stringify({
88
+ type: "REFRESH_TOKEN",
89
+ payload: "<some_refresh_token>"
90
+ })
91
+ );
92
+ }
93
+ window.addEventListener("message", messageCallback);
94
+ return () => {
95
+ window.removeEventListener("message", messageCallback);
96
+ };
97
+ }, []);
98
+ _react.useEffect.call(void 0, () => {
99
+ if (token !== true)
100
+ return;
101
+ const messageCallback = (e) => {
102
+ let data = _optionalChain([e, 'optionalAccess', _22 => _22.data]) || null;
103
+ if (typeof data === "string") {
104
+ try {
105
+ data = JSON.parse(data);
106
+ } catch (err) {
107
+ }
108
+ }
109
+ if (debug)
110
+ logger.debug("received message", JSON.stringify(data));
111
+ const message = data;
112
+ if (!message.type)
113
+ return;
114
+ if (message.type.toUpperCase() === "TOKEN" && message.payload) {
115
+ if (debug)
116
+ logger.debug("setting token", message.payload);
117
+ setToken(_chunk2VDDEPLFjs.validToken.call(void 0, message.payload, refreshToken));
118
+ window.removeEventListener("message", messageCallback);
119
+ }
120
+ };
121
+ if (debug) {
122
+ logger.debug(
123
+ "listening for message",
124
+ JSON.stringify({
125
+ type: "TOKEN",
126
+ payload: "<some_token>"
127
+ })
128
+ );
129
+ }
130
+ window.addEventListener("message", messageCallback);
131
+ return () => {
132
+ window.removeEventListener("message", messageCallback);
133
+ };
134
+ }, []);
135
+ _react.useEffect.call(void 0, () => {
136
+ if (idToken !== true)
137
+ return;
138
+ const messageCallback = (e) => {
139
+ let data = _optionalChain([e, 'optionalAccess', _23 => _23.data]) || null;
140
+ if (typeof data === "string") {
141
+ try {
142
+ data = JSON.parse(data);
143
+ } catch (err) {
144
+ }
145
+ }
146
+ if (debug)
147
+ logger.debug("received message", JSON.stringify(data));
148
+ const message = data;
149
+ if (!message.type)
150
+ return;
151
+ if (message.type.toUpperCase() === "ID_TOKEN" && message.payload) {
152
+ if (debug)
153
+ logger.debug("setting id token", message.payload);
154
+ setIdToken(_chunk2VDDEPLFjs.validToken.call(void 0, message.payload, refreshToken));
155
+ window.removeEventListener("message", messageCallback);
156
+ }
157
+ };
158
+ if (debug) {
159
+ logger.debug(
160
+ "listening for message",
161
+ JSON.stringify({
162
+ type: "ID_TOKEN",
163
+ payload: "<some_id_token>"
164
+ })
165
+ );
166
+ }
167
+ window.addEventListener("message", messageCallback);
168
+ return () => {
169
+ window.removeEventListener("message", messageCallback);
170
+ };
171
+ }, []);
172
+ const keycloakClient = _react.useMemo.call(void 0,
173
+ () => _multiplatformone.MultiPlatform.isIframe && keycloakConfig ? new (0, _keycloakjs2.default)({
174
+ url: keycloakConfig.url,
175
+ realm: keycloakConfig.realm,
176
+ clientId: keycloakConfig.clientId
177
+ }) : void 0,
178
+ [keycloakInitOptions, keycloakConfig, token, refreshToken, idToken]
179
+ );
180
+ const initOptions = _react.useMemo.call(void 0, () => {
181
+ if (!_multiplatformone.MultiPlatform.isIframe)
182
+ return;
183
+ const initOptions2 = {
184
+ ...defaultKeycloakInitOptions,
185
+ ...keycloakInitOptions
186
+ };
187
+ if (debug)
188
+ initOptions2.enableLogging = true;
189
+ if (token && typeof token === "string") {
190
+ initOptions2.token = token;
191
+ initOptions2.timeSkew = 0;
192
+ if (idToken && typeof idToken === "string")
193
+ initOptions2.idToken = idToken;
194
+ if (refreshToken && typeof refreshToken === "string")
195
+ initOptions2.refreshToken = refreshToken;
196
+ }
197
+ if (typeof window !== "undefined" && window.self !== window.top || token && !refreshToken) {
198
+ initOptions2.checkLoginIframe = false;
199
+ initOptions2.flow = "implicit";
200
+ initOptions2.onLoad = void 0;
201
+ }
202
+ return initOptions2;
203
+ }, [keycloakInitOptions, token, idToken, refreshToken]);
204
+ _react.useEffect.call(void 0, () => {
205
+ function onError() {
206
+ if (keycloakClient && initOptions)
207
+ setKeycloak(new (0, _chunkZW4GP2I5js.Keycloak)(keycloakClient));
208
+ }
209
+ function onUpdate() {
210
+ if (keycloakClient && initOptions)
211
+ setKeycloak(new (0, _chunkZW4GP2I5js.Keycloak)(keycloakClient));
212
+ }
213
+ if (keycloakClient && initOptions) {
214
+ (async () => {
215
+ keycloakClient.onAuthError = onError;
216
+ keycloakClient.onAuthLogout = onUpdate;
217
+ keycloakClient.onAuthRefreshError = onError;
218
+ keycloakClient.onAuthRefreshSuccess = onUpdate;
219
+ keycloakClient.onAuthSuccess = onUpdate;
220
+ keycloakClient.onReady = onUpdate;
221
+ keycloakClient.onTokenExpired = async () => {
222
+ try {
223
+ await keycloakClient.updateToken(5);
224
+ } catch (err) {
225
+ setKeycloak(new (0, _chunkZW4GP2I5js.Keycloak)());
226
+ }
227
+ };
228
+ const authenticated = await keycloakClient.init(initOptions);
229
+ setKeycloak(new (0, _chunkZW4GP2I5js.Keycloak)(authenticated ? keycloakClient : void 0));
230
+ })();
231
+ }
232
+ }, []);
233
+ return /* @__PURE__ */ _react2.default.createElement(_react3.SessionProvider, { ...sessionProvider }, /* @__PURE__ */ _react2.default.createElement(_chunkYACGLW5Qjs.KeycloakContext.Provider, { value: keycloak }, /* @__PURE__ */ _react2.default.createElement(_chunk2BKS6UM5js.AfterAuth, null, children)));
234
+ }
235
+ var defaultKeycloakInitOptions = {
236
+ checkLoginIframe: true,
237
+ checkLoginIframeInterval: 5,
238
+ enableLogging: false,
239
+ onLoad: "check-sso",
240
+ pkceMethod: "S256"
241
+ };
242
+
243
+
244
+
245
+ exports.AuthProvider = AuthProvider;
@@ -0,0 +1,11 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
2
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
3
+ }) : x)(function(x) {
4
+ if (typeof require !== "undefined")
5
+ return require.apply(this, arguments);
6
+ throw Error('Dynamic require of "' + x + '" is not supported');
7
+ });
8
+
9
+
10
+
11
+ exports.__require = __require;