oidc-spa 7.2.0-rc.1 → 7.2.0-rc.2
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/backend.js.map +1 -1
- package/core/AuthResponse.js.map +1 -1
- package/core/Oidc.js.map +1 -1
- package/core/OidcInitializationError.d.ts +0 -13
- package/core/OidcInitializationError.js +0 -243
- package/core/OidcInitializationError.js.map +1 -1
- package/core/OidcMetadata.js.map +1 -1
- package/core/StateData.js.map +1 -1
- package/core/configId.js.map +1 -1
- package/core/createOidc.js +38 -5
- package/core/createOidc.js.map +1 -1
- package/core/diagnostic.d.ts +14 -0
- package/core/diagnostic.js +214 -0
- package/core/diagnostic.js.map +1 -0
- package/core/evtIsUserActive.js.map +1 -1
- package/core/handleOidcCallback.js.map +1 -1
- package/core/iframeMessageProtection.js.map +1 -1
- package/core/index.js.map +1 -1
- package/core/initialLocationHref.js.map +1 -1
- package/core/isNewBrowserSession.js.map +1 -1
- package/core/loginOrGoToAuthServer.js.map +1 -1
- package/core/loginPropagationToOtherTabs.js.map +1 -1
- package/core/loginSilent.js.map +1 -1
- package/core/logoutPropagationToOtherTabs.js.map +1 -1
- package/core/oidcClientTsUserToTokens.js.map +1 -1
- package/core/ongoingLoginOrRefreshProcesses.js.map +1 -1
- package/core/persistedAuthState.js.map +1 -1
- package/entrypoint.js.map +1 -1
- package/esm/core/AuthResponse.d.ts +5 -0
- package/{src/core/AuthResponse.ts → esm/core/AuthResponse.js} +2 -10
- package/esm/core/AuthResponse.js.map +1 -0
- package/esm/core/Oidc.d.ts +126 -0
- package/esm/core/Oidc.js +2 -0
- package/esm/core/Oidc.js.map +1 -0
- package/esm/core/OidcInitializationError.d.ts +7 -0
- package/esm/core/OidcInitializationError.js +17 -0
- package/esm/core/OidcInitializationError.js.map +1 -0
- package/{src/core/OidcMetadata.ts → esm/core/OidcMetadata.d.ts} +0 -5
- package/esm/core/OidcMetadata.js +3 -0
- package/esm/core/OidcMetadata.js.map +1 -0
- package/esm/core/StateData.d.ts +42 -0
- package/esm/core/StateData.js +55 -0
- package/esm/core/StateData.js.map +1 -0
- package/esm/core/configId.d.ts +4 -0
- package/esm/core/configId.js +4 -0
- package/esm/core/configId.js.map +1 -0
- package/esm/core/createOidc.d.ts +132 -0
- package/{src/core/createOidc.ts → esm/core/createOidc.js} +269 -806
- package/esm/core/createOidc.js.map +1 -0
- package/esm/core/diagnostic.d.ts +14 -0
- package/{src/core/OidcInitializationError.ts → esm/core/diagnostic.js} +32 -109
- package/esm/core/diagnostic.js.map +1 -0
- package/esm/core/evtIsUserActive.d.ts +5 -0
- package/{src/core/evtIsUserActive.ts → esm/core/evtIsUserActive.js} +14 -46
- package/esm/core/evtIsUserActive.js.map +1 -0
- package/esm/core/handleOidcCallback.d.ts +13 -0
- package/{src/core/handleOidcCallback.ts → esm/core/handleOidcCallback.js} +25 -121
- package/esm/core/handleOidcCallback.js.map +1 -0
- package/esm/core/iframeMessageProtection.d.ts +20 -0
- package/{src/core/iframeMessageProtection.ts → esm/core/iframeMessageProtection.js} +10 -45
- package/esm/core/iframeMessageProtection.js.map +1 -0
- package/esm/core/index.js +4 -0
- package/esm/core/index.js.map +1 -0
- package/esm/core/initialLocationHref.d.ts +1 -0
- package/{src/core/initialLocationHref.ts → esm/core/initialLocationHref.js} +1 -1
- package/esm/core/initialLocationHref.js.map +1 -0
- package/esm/core/isNewBrowserSession.d.ts +9 -0
- package/{src/core/isNewBrowserSession.ts → esm/core/isNewBrowserSession.js} +3 -15
- package/esm/core/isNewBrowserSession.js.map +1 -0
- package/esm/core/loginOrGoToAuthServer.d.ts +40 -0
- package/{src/core/loginOrGoToAuthServer.ts → esm/core/loginOrGoToAuthServer.js} +60 -168
- package/esm/core/loginOrGoToAuthServer.js.map +1 -0
- package/esm/core/loginPropagationToOtherTabs.d.ts +8 -0
- package/{src/core/loginPropagationToOtherTabs.ts → esm/core/loginPropagationToOtherTabs.js} +7 -25
- package/esm/core/loginPropagationToOtherTabs.js.map +1 -0
- package/esm/core/loginSilent.d.ts +28 -0
- package/esm/core/loginSilent.js +125 -0
- package/esm/core/loginSilent.js.map +1 -0
- package/esm/core/logoutPropagationToOtherTabs.d.ts +10 -0
- package/{src/core/logoutPropagationToOtherTabs.ts → esm/core/logoutPropagationToOtherTabs.js} +8 -28
- package/esm/core/logoutPropagationToOtherTabs.js.map +1 -0
- package/esm/core/oidcClientTsUserToTokens.d.ts +11 -0
- package/esm/core/oidcClientTsUserToTokens.js +155 -0
- package/esm/core/oidcClientTsUserToTokens.js.map +1 -0
- package/esm/core/ongoingLoginOrRefreshProcesses.d.ts +6 -0
- package/{src/core/ongoingLoginOrRefreshProcesses.ts → esm/core/ongoingLoginOrRefreshProcesses.js} +6 -24
- package/esm/core/ongoingLoginOrRefreshProcesses.js.map +1 -0
- package/esm/core/persistedAuthState.d.ts +28 -0
- package/esm/core/persistedAuthState.js +64 -0
- package/esm/core/persistedAuthState.js.map +1 -0
- package/esm/entrypoint.d.ts +7 -0
- package/{src/entrypoint.ts → esm/entrypoint.js} +3 -26
- package/esm/entrypoint.js.map +1 -0
- package/esm/index.js +2 -0
- package/esm/index.js.map +1 -0
- package/esm/keycloak/index.d.ts +3 -0
- package/esm/keycloak/index.js +3 -0
- package/esm/keycloak/index.js.map +1 -0
- package/esm/keycloak/isKeycloak.d.ts +3 -0
- package/{src/keycloak/isKeycloak.ts → esm/keycloak/isKeycloak.js} +2 -8
- package/esm/keycloak/isKeycloak.js.map +1 -0
- package/esm/keycloak/keycloak-js/Keycloak.d.ts +284 -0
- package/{src/keycloak/keycloak-js/Keycloak.ts → esm/keycloak/keycloak-js/Keycloak.js} +116 -439
- package/esm/keycloak/keycloak-js/Keycloak.js.map +1 -0
- package/esm/keycloak/keycloak-js/index.js +2 -0
- package/esm/keycloak/keycloak-js/index.js.map +1 -0
- package/{src/keycloak/keycloak-js/types.ts → esm/keycloak/keycloak-js/types.d.ts} +3 -84
- package/esm/keycloak/keycloak-js/types.js +2 -0
- package/esm/keycloak/keycloak-js/types.js.map +1 -0
- package/esm/keycloak/keycloakIssuerUriParsed.d.ts +9 -0
- package/{src/keycloak/keycloakIssuerUriParsed.ts → esm/keycloak/keycloakIssuerUriParsed.js} +2 -15
- package/esm/keycloak/keycloakIssuerUriParsed.js.map +1 -0
- package/esm/keycloak/keycloakUtils.d.ts +37 -0
- package/esm/keycloak/keycloakUtils.js +44 -0
- package/esm/keycloak/keycloakUtils.js.map +1 -0
- package/esm/keycloak-js.js +2 -0
- package/esm/keycloak-js.js.map +1 -0
- package/esm/mock/index.js +2 -0
- package/esm/mock/index.js.map +1 -0
- package/esm/mock/oidc.d.ts +19 -0
- package/{src/mock/oidc.ts → esm/mock/oidc.js} +28 -88
- package/esm/mock/oidc.js.map +1 -0
- package/esm/mock/react.d.ts +58 -0
- package/esm/mock/react.js +7 -0
- package/esm/mock/react.js.map +1 -0
- package/esm/react/index.js +2 -0
- package/esm/react/index.js.map +1 -0
- package/esm/react/react.d.ts +102 -0
- package/esm/react/react.js +221 -0
- package/esm/react/react.js.map +1 -0
- package/esm/tools/Deferred.d.ts +14 -0
- package/esm/tools/Deferred.js +23 -0
- package/esm/tools/Deferred.js.map +1 -0
- package/esm/tools/EphemeralSessionStorage.d.ts +12 -0
- package/{src/tools/EphemeralSessionStorage.ts → esm/tools/EphemeralSessionStorage.js} +30 -112
- package/esm/tools/EphemeralSessionStorage.js.map +1 -0
- package/esm/tools/Evt.d.ts +11 -0
- package/{src/tools/Evt.ts → esm/tools/Evt.js} +7 -25
- package/esm/tools/Evt.js.map +1 -0
- package/esm/tools/StatefulEvt.d.ts +12 -0
- package/esm/tools/StatefulEvt.js +21 -0
- package/esm/tools/StatefulEvt.js.map +1 -0
- package/esm/tools/ValueOrAsyncGetter.js +2 -0
- package/esm/tools/ValueOrAsyncGetter.js.map +1 -0
- package/esm/tools/asymmetricEncryption.d.ts +18 -0
- package/esm/tools/asymmetricEncryption.js +85 -0
- package/esm/tools/asymmetricEncryption.js.map +1 -0
- package/esm/tools/base64.d.ts +2 -0
- package/{src/tools/base64.ts → esm/tools/base64.js} +3 -3
- package/esm/tools/base64.js.map +1 -0
- package/esm/tools/createObjectThatThrowsIfAccessed.d.ts +8 -0
- package/{src/tools/createObjectThatThrowsIfAccessed.ts → esm/tools/createObjectThatThrowsIfAccessed.js} +7 -18
- package/esm/tools/createObjectThatThrowsIfAccessed.js.map +1 -0
- package/esm/tools/decodeJwt.d.ts +25 -0
- package/esm/tools/decodeJwt.js +60 -0
- package/esm/tools/decodeJwt.js.map +1 -0
- package/esm/tools/generateUrlSafeRandom.d.ts +3 -0
- package/{src/tools/generateUrlSafeRandom.ts → esm/tools/generateUrlSafeRandom.js} +5 -8
- package/esm/tools/generateUrlSafeRandom.js.map +1 -0
- package/esm/tools/getDownlinkAndRtt.d.ts +4 -0
- package/{src/tools/getDownlinkAndRtt.ts → esm/tools/getDownlinkAndRtt.js} +6 -10
- package/esm/tools/getDownlinkAndRtt.js.map +1 -0
- package/esm/tools/getIsOnline.d.ts +7 -0
- package/{src/tools/getIsOnline.ts → esm/tools/getIsOnline.js} +3 -9
- package/esm/tools/getIsOnline.js.map +1 -0
- package/esm/tools/getIsValidRemoteJson.d.ts +1 -0
- package/esm/tools/getIsValidRemoteJson.js +15 -0
- package/esm/tools/getIsValidRemoteJson.js.map +1 -0
- package/esm/tools/getPrUserInteraction.d.ts +4 -0
- package/{src/tools/getPrUserInteraction.ts → esm/tools/getPrUserInteraction.js} +2 -6
- package/esm/tools/getPrUserInteraction.js.map +1 -0
- package/esm/tools/getUserEnvironmentInfo.d.ts +1 -0
- package/esm/tools/getUserEnvironmentInfo.js +50 -0
- package/esm/tools/getUserEnvironmentInfo.js.map +1 -0
- package/esm/tools/haveSharedParentDomain.d.ts +4 -0
- package/{src/tools/haveSharedParentDomain.ts → esm/tools/haveSharedParentDomain.js} +3 -5
- package/esm/tools/haveSharedParentDomain.js.map +1 -0
- package/esm/tools/isDev.d.ts +1 -0
- package/{src/tools/isDev.ts → esm/tools/isDev.js} +5 -12
- package/esm/tools/isDev.js.map +1 -0
- package/esm/tools/parseKeycloakIssuerUri.d.ts +30 -0
- package/{src/tools/parseKeycloakIssuerUri.ts → esm/tools/parseKeycloakIssuerUri.js} +2 -18
- package/esm/tools/parseKeycloakIssuerUri.js.map +1 -0
- package/esm/tools/readExpirationTimeInJwt.d.ts +1 -0
- package/{src/tools/readExpirationTimeInJwt.ts → esm/tools/readExpirationTimeInJwt.js} +6 -7
- package/esm/tools/readExpirationTimeInJwt.js.map +1 -0
- package/esm/tools/startCountdown.d.ts +11 -0
- package/{src/tools/startCountdown.ts → esm/tools/startCountdown.js} +6 -17
- package/esm/tools/startCountdown.js.map +1 -0
- package/esm/tools/subscribeToUserInteraction.d.ts +6 -0
- package/{src/tools/subscribeToUserInteraction.ts → esm/tools/subscribeToUserInteraction.js} +4 -13
- package/esm/tools/subscribeToUserInteraction.js.map +1 -0
- package/esm/tools/toFullyQualifiedUrl.d.ts +10 -0
- package/{src/tools/toFullyQualifiedUrl.ts → esm/tools/toFullyQualifiedUrl.js} +7 -25
- package/esm/tools/toFullyQualifiedUrl.js.map +1 -0
- package/esm/tools/toHumanReadableDuration.d.ts +1 -0
- package/{src/tools/toHumanReadableDuration.ts → esm/tools/toHumanReadableDuration.js} +8 -5
- package/esm/tools/toHumanReadableDuration.js.map +1 -0
- package/esm/tools/urlSearchParams.d.ts +19 -0
- package/{src/tools/urlSearchParams.ts → esm/tools/urlSearchParams.js} +24 -70
- package/esm/tools/urlSearchParams.js.map +1 -0
- package/esm/tools/workerTimers.d.ts +5 -0
- package/{src/tools/workerTimers.ts → esm/tools/workerTimers.js} +7 -27
- package/esm/tools/workerTimers.js.map +1 -0
- package/esm/vendor/frontend/oidc-client-ts.js +3636 -0
- package/esm/vendor/frontend/tsafe.js +1 -0
- package/esm/vendor/frontend/worker-timers.js +1 -0
- package/index.js.map +1 -1
- package/keycloak/index.js.map +1 -1
- package/keycloak/isKeycloak.js.map +1 -1
- package/keycloak/keycloak-js/Keycloak.js.map +1 -1
- package/keycloak/keycloak-js/index.js.map +1 -1
- package/keycloak/keycloak-js/types.js.map +1 -1
- package/keycloak/keycloakIssuerUriParsed.js.map +1 -1
- package/keycloak/keycloakUtils.js.map +1 -1
- package/keycloak-js.js.map +1 -1
- package/mock/index.js.map +1 -1
- package/mock/oidc.js.map +1 -1
- package/mock/react.js.map +1 -1
- package/package.json +74 -328
- package/react/index.js.map +1 -1
- package/react/react.js.map +1 -1
- package/tools/Deferred.js.map +1 -1
- package/tools/EphemeralSessionStorage.js.map +1 -1
- package/tools/Evt.js.map +1 -1
- package/tools/StatefulEvt.js.map +1 -1
- package/tools/ValueOrAsyncGetter.js.map +1 -1
- package/tools/asymmetricEncryption.js.map +1 -1
- package/tools/base64.js.map +1 -1
- package/tools/createObjectThatThrowsIfAccessed.js.map +1 -1
- package/tools/decodeJwt.js.map +1 -1
- package/tools/generateUrlSafeRandom.js.map +1 -1
- package/tools/getDownlinkAndRtt.js.map +1 -1
- package/tools/getIsOnline.js.map +1 -1
- package/tools/getIsValidRemoteJson.js.map +1 -1
- package/tools/getPrUserInteraction.js.map +1 -1
- package/tools/getUserEnvironmentInfo.js.map +1 -1
- package/tools/haveSharedParentDomain.js.map +1 -1
- package/tools/isDev.js.map +1 -1
- package/tools/parseKeycloakIssuerUri.js.map +1 -1
- package/tools/readExpirationTimeInJwt.js.map +1 -1
- package/tools/startCountdown.js.map +1 -1
- package/tools/subscribeToUserInteraction.js.map +1 -1
- package/tools/toFullyQualifiedUrl.js.map +1 -1
- package/tools/toHumanReadableDuration.js.map +1 -1
- package/tools/urlSearchParams.js.map +1 -1
- package/tools/workerTimers.js.map +1 -1
- package/LICENSE +0 -21
- package/README.md +0 -185
- package/src/backend.ts +0 -391
- package/src/core/Oidc.ts +0 -140
- package/src/core/StateData.ts +0 -118
- package/src/core/configId.ts +0 -3
- package/src/core/loginSilent.ts +0 -209
- package/src/core/oidcClientTsUserToTokens.ts +0 -229
- package/src/core/persistedAuthState.ts +0 -122
- package/src/keycloak/index.ts +0 -8
- package/src/keycloak/keycloakUtils.ts +0 -90
- package/src/mock/react.tsx +0 -11
- package/src/react/react.tsx +0 -476
- package/src/tools/Deferred.ts +0 -39
- package/src/tools/StatefulEvt.ts +0 -38
- package/src/tools/asymmetricEncryption.ts +0 -184
- package/src/tools/decodeJwt.ts +0 -95
- package/src/tools/getIsValidRemoteJson.ts +0 -18
- package/src/tools/getUserEnvironmentInfo.ts +0 -42
- package/src/vendor/backend/evt.ts +0 -2
- package/src/vendor/backend/jsonwebtoken.ts +0 -1
- package/src/vendor/backend/node-fetch.ts +0 -2
- package/src/vendor/backend/node-jose.ts +0 -1
- package/src/vendor/backend/tsafe.ts +0 -5
- package/src/vendor/backend/zod.ts +0 -1
- /package/{src/core/index.ts → esm/core/index.d.ts} +0 -0
- /package/{src/index.ts → esm/index.d.ts} +0 -0
- /package/{src/keycloak/keycloak-js/index.ts → esm/keycloak/keycloak-js/index.d.ts} +0 -0
- /package/{src/keycloak-js.ts → esm/keycloak-js.d.ts} +0 -0
- /package/{src/mock/index.ts → esm/mock/index.d.ts} +0 -0
- /package/{src/react/index.ts → esm/react/index.d.ts} +0 -0
- /package/{src/tools/ValueOrAsyncGetter.ts → esm/tools/ValueOrAsyncGetter.d.ts} +0 -0
- /package/{src/vendor/frontend/oidc-client-ts.ts → esm/vendor/frontend/oidc-client-ts.d.ts} +0 -0
- /package/{src/vendor/frontend/tsafe.ts → esm/vendor/frontend/tsafe.d.ts} +0 -0
- /package/{src/vendor/frontend/worker-timers.ts → esm/vendor/frontend/worker-timers.d.ts} +0 -0
|
@@ -1,115 +1,40 @@
|
|
|
1
|
-
import type { UserManager as OidcClientTsUserManager } from "../vendor/frontend/oidc-client-ts";
|
|
2
1
|
import { toFullyQualifiedUrl } from "../tools/toFullyQualifiedUrl";
|
|
3
|
-
import { assert,
|
|
4
|
-
import type { StateData } from "./StateData";
|
|
5
|
-
import type { NonPostableEvt } from "../tools/Evt";
|
|
2
|
+
import { assert, noUndefined } from "../vendor/frontend/tsafe";
|
|
6
3
|
import { createStatefulEvt } from "../tools/StatefulEvt";
|
|
7
4
|
import { Deferred } from "../tools/Deferred";
|
|
8
5
|
import { addOrUpdateSearchParam, getAllSearchParams } from "../tools/urlSearchParams";
|
|
9
|
-
|
|
10
6
|
const globalContext = {
|
|
11
7
|
evtHasLoginBeenCalled: createStatefulEvt(() => false)
|
|
12
8
|
};
|
|
13
|
-
|
|
14
|
-
type Params = Params.Login | Params.GoToAuthServer;
|
|
15
|
-
|
|
16
|
-
namespace Params {
|
|
17
|
-
type Common = {
|
|
18
|
-
redirectUrl: string;
|
|
19
|
-
extraQueryParams_local: Record<string, string | undefined> | undefined;
|
|
20
|
-
transformUrlBeforeRedirect_local: ((url: string) => string) | undefined;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
export type Login = Common & {
|
|
24
|
-
action: "login";
|
|
25
|
-
doNavigateBackToLastPublicUrlIfTheTheUserNavigateBack: boolean;
|
|
26
|
-
doForceReloadOnBfCache: boolean;
|
|
27
|
-
interaction:
|
|
28
|
-
| "ensure no interaction"
|
|
29
|
-
| "ensure interaction"
|
|
30
|
-
| "directly redirect if active session show login otherwise";
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
export type GoToAuthServer = Common & {
|
|
34
|
-
action: "go to auth server";
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
|
|
38
9
|
export function getPrSafelyRestoredFromBfCacheAfterLoginBackNavigation() {
|
|
39
|
-
const dOut = new Deferred
|
|
40
|
-
|
|
10
|
+
const dOut = new Deferred();
|
|
41
11
|
const { unsubscribe } = globalContext.evtHasLoginBeenCalled.subscribe(hasLoginBeenCalled => {
|
|
42
12
|
if (!hasLoginBeenCalled) {
|
|
43
13
|
unsubscribe();
|
|
44
14
|
dOut.resolve();
|
|
45
15
|
}
|
|
46
16
|
});
|
|
47
|
-
|
|
48
17
|
return dOut.pr;
|
|
49
18
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
configId: string;
|
|
53
|
-
oidcClientTsUserManager: OidcClientTsUserManager;
|
|
54
|
-
transformUrlBeforeRedirect:
|
|
55
|
-
| ((params: { authorizationUrl: string; isSilent: boolean }) => string)
|
|
56
|
-
| undefined;
|
|
57
|
-
|
|
58
|
-
getExtraQueryParams:
|
|
59
|
-
| ((params: { isSilent: boolean; url: string }) => Record<string, string | undefined>)
|
|
60
|
-
| undefined;
|
|
61
|
-
|
|
62
|
-
getExtraTokenParams: (() => Record<string, string | undefined>) | undefined;
|
|
63
|
-
|
|
64
|
-
homeUrl: string;
|
|
65
|
-
evtIsUserLoggedIn: NonPostableEvt<boolean>;
|
|
66
|
-
log: typeof console.log | undefined;
|
|
67
|
-
}) {
|
|
68
|
-
const {
|
|
69
|
-
configId,
|
|
70
|
-
oidcClientTsUserManager,
|
|
71
|
-
|
|
72
|
-
transformUrlBeforeRedirect,
|
|
73
|
-
getExtraQueryParams,
|
|
74
|
-
|
|
75
|
-
getExtraTokenParams,
|
|
76
|
-
|
|
77
|
-
homeUrl,
|
|
78
|
-
evtIsUserLoggedIn,
|
|
79
|
-
log
|
|
80
|
-
} = params;
|
|
81
|
-
|
|
19
|
+
export function createLoginOrGoToAuthServer(params) {
|
|
20
|
+
const { configId, oidcClientTsUserManager, transformUrlBeforeRedirect, getExtraQueryParams, getExtraTokenParams, homeUrl, evtIsUserLoggedIn, log } = params;
|
|
82
21
|
const LOCAL_STORAGE_KEY_TO_CLEAR_WHEN_USER_LOGGED_IN = `oidc-spa.login-redirect-initiated:${configId}`;
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
async function loginOrGoToAuthServer(params: Params): Promise<never> {
|
|
87
|
-
const {
|
|
88
|
-
redirectUrl: redirectUrl_params,
|
|
89
|
-
extraQueryParams_local,
|
|
90
|
-
transformUrlBeforeRedirect_local,
|
|
91
|
-
...rest
|
|
92
|
-
} = params;
|
|
93
|
-
|
|
22
|
+
let lastPublicUrl = undefined;
|
|
23
|
+
async function loginOrGoToAuthServer(params) {
|
|
24
|
+
const { redirectUrl: redirectUrl_params, extraQueryParams_local, transformUrlBeforeRedirect_local, ...rest } = params;
|
|
94
25
|
log?.(`Calling loginOrGoToAuthServer ${JSON.stringify(params, null, 2)}`);
|
|
95
|
-
|
|
96
26
|
login_specific_handling: {
|
|
97
27
|
if (rest.action !== "login") {
|
|
98
28
|
break login_specific_handling;
|
|
99
29
|
}
|
|
100
|
-
|
|
101
30
|
if (globalContext.evtHasLoginBeenCalled.current) {
|
|
102
31
|
log?.("login() has already been called, ignoring the call");
|
|
103
|
-
return new Promise
|
|
32
|
+
return new Promise(() => { });
|
|
104
33
|
}
|
|
105
|
-
|
|
106
34
|
globalContext.evtHasLoginBeenCalled.current = true;
|
|
107
|
-
|
|
108
35
|
if (document.visibilityState !== "visible") {
|
|
109
36
|
rest.interaction === "ensure no interaction";
|
|
110
|
-
|
|
111
|
-
const dVisible = new Deferred<void>();
|
|
112
|
-
|
|
37
|
+
const dVisible = new Deferred();
|
|
113
38
|
const onVisible = () => {
|
|
114
39
|
if (document.visibilityState !== "visible") {
|
|
115
40
|
return;
|
|
@@ -118,10 +43,8 @@ export function createLoginOrGoToAuthServer(params: {
|
|
|
118
43
|
dVisible.resolve();
|
|
119
44
|
};
|
|
120
45
|
document.addEventListener("visibilitychange", onVisible);
|
|
121
|
-
|
|
122
46
|
await dVisible.pr;
|
|
123
47
|
}
|
|
124
|
-
|
|
125
48
|
bf_cache_handling: {
|
|
126
49
|
if (rest.doForceReloadOnBfCache) {
|
|
127
50
|
window.removeEventListener("pageshow", () => {
|
|
@@ -129,51 +52,41 @@ export function createLoginOrGoToAuthServer(params: {
|
|
|
129
52
|
});
|
|
130
53
|
break bf_cache_handling;
|
|
131
54
|
}
|
|
132
|
-
|
|
133
55
|
localStorage.setItem(LOCAL_STORAGE_KEY_TO_CLEAR_WHEN_USER_LOGGED_IN, "true");
|
|
134
|
-
|
|
135
56
|
const callback = () => {
|
|
136
57
|
window.removeEventListener("pageshow", callback);
|
|
137
|
-
|
|
138
|
-
log?.(
|
|
139
|
-
"We came back from the login pages and the state of the app has been restored"
|
|
140
|
-
);
|
|
141
|
-
|
|
58
|
+
log?.("We came back from the login pages and the state of the app has been restored");
|
|
142
59
|
if (rest.doNavigateBackToLastPublicUrlIfTheTheUserNavigateBack) {
|
|
143
60
|
if (lastPublicUrl !== undefined) {
|
|
144
61
|
log?.(`Loading last public route: ${lastPublicUrl}`);
|
|
145
62
|
window.location.href = lastPublicUrl;
|
|
146
|
-
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
147
65
|
log?.("We don't know the last public route, navigating back in history");
|
|
148
66
|
window.history.back();
|
|
149
67
|
}
|
|
150
|
-
}
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
151
70
|
log?.("The current page doesn't require auth...");
|
|
152
|
-
|
|
153
|
-
if (
|
|
154
|
-
localStorage.getItem(LOCAL_STORAGE_KEY_TO_CLEAR_WHEN_USER_LOGGED_IN) === null
|
|
155
|
-
) {
|
|
71
|
+
if (localStorage.getItem(LOCAL_STORAGE_KEY_TO_CLEAR_WHEN_USER_LOGGED_IN) === null) {
|
|
156
72
|
log?.("but the user is now authenticated, reloading the page");
|
|
157
73
|
location.reload();
|
|
158
|
-
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
159
76
|
log?.("and the user doesn't seem to be authenticated, avoiding a reload");
|
|
160
77
|
globalContext.evtHasLoginBeenCalled.current = false;
|
|
161
78
|
}
|
|
162
79
|
}
|
|
163
80
|
};
|
|
164
|
-
|
|
165
81
|
window.addEventListener("pageshow", callback);
|
|
166
82
|
}
|
|
167
83
|
}
|
|
168
|
-
|
|
169
84
|
const redirectUrl = toFullyQualifiedUrl({
|
|
170
85
|
urlish: redirectUrl_params,
|
|
171
86
|
doAssertNoQueryParams: false
|
|
172
87
|
});
|
|
173
|
-
|
|
174
88
|
log?.(`redirectUrl: ${redirectUrl}`);
|
|
175
|
-
|
|
176
|
-
const stateData: StateData = {
|
|
89
|
+
const stateData = {
|
|
177
90
|
context: "redirect",
|
|
178
91
|
redirectUrl,
|
|
179
92
|
extraQueryParams: {},
|
|
@@ -189,37 +102,28 @@ export function createLoginOrGoToAuthServer(params: {
|
|
|
189
102
|
}
|
|
190
103
|
})()
|
|
191
104
|
};
|
|
192
|
-
|
|
193
105
|
const isSilent = rest.action === "login" && rest.interaction === "ensure no interaction";
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
(
|
|
106
|
+
const transformUrl_oidcClientTs = (url) => {
|
|
107
|
+
[
|
|
197
108
|
[
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
[extraQueryParams_local, transformUrlBeforeRedirect_local]
|
|
209
|
-
] as const
|
|
210
|
-
).forEach(([extraQueryParamsMaybeGetter, transformUrlBeforeRedirect], i, arr) => {
|
|
109
|
+
getExtraQueryParams,
|
|
110
|
+
transformUrlBeforeRedirect === undefined
|
|
111
|
+
? undefined
|
|
112
|
+
: (url) => transformUrlBeforeRedirect({
|
|
113
|
+
isSilent,
|
|
114
|
+
authorizationUrl: url
|
|
115
|
+
})
|
|
116
|
+
],
|
|
117
|
+
[extraQueryParams_local, transformUrlBeforeRedirect_local]
|
|
118
|
+
].forEach(([extraQueryParamsMaybeGetter, transformUrlBeforeRedirect], i, arr) => {
|
|
211
119
|
const url_before = i !== arr.length - 1 ? undefined : url;
|
|
212
|
-
|
|
213
120
|
add_extra_query_params: {
|
|
214
121
|
if (extraQueryParamsMaybeGetter === undefined) {
|
|
215
122
|
break add_extra_query_params;
|
|
216
123
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
? extraQueryParamsMaybeGetter({ isSilent, url })
|
|
221
|
-
: extraQueryParamsMaybeGetter;
|
|
222
|
-
|
|
124
|
+
const extraQueryParams = typeof extraQueryParamsMaybeGetter === "function"
|
|
125
|
+
? extraQueryParamsMaybeGetter({ isSilent, url })
|
|
126
|
+
: extraQueryParamsMaybeGetter;
|
|
223
127
|
for (const [name, value] of Object.entries(extraQueryParams)) {
|
|
224
128
|
if (value === undefined) {
|
|
225
129
|
continue;
|
|
@@ -232,37 +136,29 @@ export function createLoginOrGoToAuthServer(params: {
|
|
|
232
136
|
});
|
|
233
137
|
}
|
|
234
138
|
}
|
|
235
|
-
|
|
236
139
|
apply_transform_url: {
|
|
237
140
|
if (transformUrlBeforeRedirect === undefined) {
|
|
238
141
|
break apply_transform_url;
|
|
239
142
|
}
|
|
240
143
|
url = transformUrlBeforeRedirect(url);
|
|
241
144
|
}
|
|
242
|
-
|
|
243
145
|
update_state: {
|
|
244
146
|
if (url_before === undefined) {
|
|
245
147
|
break update_state;
|
|
246
148
|
}
|
|
247
|
-
|
|
248
149
|
const paramValueByName_current = getAllSearchParams(url);
|
|
249
150
|
const paramValueByName_before = getAllSearchParams(url_before);
|
|
250
|
-
|
|
251
151
|
for (const [name, value_current] of Object.entries(paramValueByName_current)) {
|
|
252
|
-
const value_before
|
|
253
|
-
|
|
152
|
+
const value_before = paramValueByName_before[name];
|
|
254
153
|
if (value_before === value_current) {
|
|
255
154
|
continue;
|
|
256
155
|
}
|
|
257
|
-
|
|
258
156
|
stateData.extraQueryParams[name] = value_current;
|
|
259
157
|
}
|
|
260
158
|
}
|
|
261
159
|
});
|
|
262
|
-
|
|
263
160
|
return url;
|
|
264
161
|
};
|
|
265
|
-
|
|
266
162
|
const redirectMethod = (() => {
|
|
267
163
|
switch (rest.action) {
|
|
268
164
|
case "login":
|
|
@@ -273,43 +169,39 @@ export function createLoginOrGoToAuthServer(params: {
|
|
|
273
169
|
return "assign";
|
|
274
170
|
}
|
|
275
171
|
})();
|
|
276
|
-
|
|
277
172
|
log?.(`redirectMethod: ${redirectMethod}`);
|
|
278
|
-
|
|
279
173
|
return oidcClientTsUserManager
|
|
280
174
|
.signinRedirect({
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
})
|
|
304
|
-
.then(() => new Promise<never>(() => {}));
|
|
175
|
+
state: stateData,
|
|
176
|
+
redirectMethod,
|
|
177
|
+
prompt: (() => {
|
|
178
|
+
switch (rest.action) {
|
|
179
|
+
case "go to auth server":
|
|
180
|
+
return undefined;
|
|
181
|
+
case "login":
|
|
182
|
+
switch (rest.interaction) {
|
|
183
|
+
case "ensure no interaction":
|
|
184
|
+
return "none";
|
|
185
|
+
case "ensure interaction":
|
|
186
|
+
return "login";
|
|
187
|
+
case "directly redirect if active session show login otherwise":
|
|
188
|
+
return undefined;
|
|
189
|
+
}
|
|
190
|
+
assert;
|
|
191
|
+
}
|
|
192
|
+
assert;
|
|
193
|
+
})(),
|
|
194
|
+
transformUrl: transformUrl_oidcClientTs,
|
|
195
|
+
extraTokenParams: getExtraTokenParams === undefined ? undefined : noUndefined(getExtraTokenParams())
|
|
196
|
+
})
|
|
197
|
+
.then(() => new Promise(() => { }));
|
|
305
198
|
}
|
|
306
|
-
|
|
307
199
|
const { unsubscribe } = evtIsUserLoggedIn.subscribe(isLoggedIn => {
|
|
308
200
|
unsubscribe();
|
|
309
|
-
|
|
310
201
|
if (isLoggedIn) {
|
|
311
202
|
localStorage.removeItem(LOCAL_STORAGE_KEY_TO_CLEAR_WHEN_USER_LOGGED_IN);
|
|
312
|
-
}
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
313
205
|
const realPushState = history.pushState.bind(history);
|
|
314
206
|
history.pushState = function pushState(...args) {
|
|
315
207
|
lastPublicUrl = window.location.href;
|
|
@@ -317,8 +209,8 @@ export function createLoginOrGoToAuthServer(params: {
|
|
|
317
209
|
};
|
|
318
210
|
}
|
|
319
211
|
});
|
|
320
|
-
|
|
321
212
|
return {
|
|
322
213
|
loginOrGoToAuthServer
|
|
323
214
|
};
|
|
324
215
|
}
|
|
216
|
+
//# sourceMappingURL=loginOrGoToAuthServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loginOrGoToAuthServer.js","sourceRoot":"","sources":["../../../src/core/loginOrGoToAuthServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,51 +1,33 @@
|
|
|
1
1
|
import { assert, is } from "../vendor/frontend/tsafe";
|
|
2
2
|
import { Deferred } from "../tools/Deferred";
|
|
3
|
-
|
|
4
3
|
const globalContext = {
|
|
5
4
|
appInstanceId: Math.random().toString(36).slice(2)
|
|
6
5
|
};
|
|
7
|
-
|
|
8
|
-
type Message = {
|
|
9
|
-
appInstanceId: string;
|
|
10
|
-
configId: string;
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
function getChannelName(params: { configId: string }) {
|
|
6
|
+
function getChannelName(params) {
|
|
14
7
|
const { configId } = params;
|
|
15
8
|
return `oidc-spa:login-propagation:${configId}`;
|
|
16
9
|
}
|
|
17
|
-
|
|
18
|
-
export function notifyOtherTabsOfLogin(params: { configId: string }) {
|
|
10
|
+
export function notifyOtherTabsOfLogin(params) {
|
|
19
11
|
const { configId } = params;
|
|
20
|
-
|
|
21
|
-
const message: Message = {
|
|
12
|
+
const message = {
|
|
22
13
|
configId,
|
|
23
14
|
appInstanceId: globalContext.appInstanceId
|
|
24
15
|
};
|
|
25
|
-
|
|
26
16
|
new BroadcastChannel(getChannelName({ configId })).postMessage(message);
|
|
27
17
|
}
|
|
28
|
-
|
|
29
|
-
export function getPrOtherTabLogin(params: { configId: string }) {
|
|
18
|
+
export function getPrOtherTabLogin(params) {
|
|
30
19
|
const { configId } = params;
|
|
31
|
-
|
|
32
|
-
const dOtherTabLogin = new Deferred<void>();
|
|
33
|
-
|
|
20
|
+
const dOtherTabLogin = new Deferred();
|
|
34
21
|
const channel = new BroadcastChannel(getChannelName({ configId }));
|
|
35
|
-
|
|
36
22
|
channel.onmessage = ({ data: message }) => {
|
|
37
|
-
assert(is
|
|
38
|
-
|
|
23
|
+
assert(is(message));
|
|
39
24
|
if (message.appInstanceId === globalContext.appInstanceId) {
|
|
40
25
|
return;
|
|
41
26
|
}
|
|
42
|
-
|
|
43
27
|
channel.close();
|
|
44
|
-
|
|
45
28
|
dOtherTabLogin.resolve();
|
|
46
29
|
};
|
|
47
|
-
|
|
48
30
|
const prOtherTabLogin = dOtherTabLogin.pr;
|
|
49
|
-
|
|
50
31
|
return { prOtherTabLogin };
|
|
51
32
|
}
|
|
33
|
+
//# sourceMappingURL=loginPropagationToOtherTabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loginPropagationToOtherTabs.js","sourceRoot":"","sources":["../../../src/core/loginPropagationToOtherTabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,aAAa,GAAG;IAClB,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACrD,CAAC;AAOF,SAAS,cAAc,CAAC,MAA4B;IAChD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAC5B,OAAO,8BAA8B,QAAQ,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAA4B;IAC/D,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE5B,MAAM,OAAO,GAAY;QACrB,QAAQ;QACR,aAAa,EAAE,aAAa,CAAC,aAAa;KAC7C,CAAC;IAEF,IAAI,gBAAgB,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAA4B;IAC3D,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE5B,MAAM,cAAc,GAAG,IAAI,QAAQ,EAAQ,CAAC;IAE5C,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAEnE,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QACtC,MAAM,CAAC,EAAE,CAAU,OAAO,CAAC,CAAC,CAAC;QAE7B,IAAI,OAAO,CAAC,aAAa,KAAK,aAAa,CAAC,aAAa,EAAE,CAAC;YACxD,OAAO;QACX,CAAC;QAED,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,cAAc,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,cAAc,CAAC,EAAE,CAAC;IAE1C,OAAO,EAAE,eAAe,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { UserManager as OidcClientTsUserManager, User as OidcClientTsUser } from "../vendor/frontend/oidc-client-ts";
|
|
2
|
+
import { type AuthResponse } from "./AuthResponse";
|
|
3
|
+
type ResultOfLoginSilent = {
|
|
4
|
+
outcome: "got auth response from iframe";
|
|
5
|
+
authResponse: AuthResponse;
|
|
6
|
+
} | {
|
|
7
|
+
outcome: "failure";
|
|
8
|
+
cause: "timeout" | "can't reach well-known oidc endpoint";
|
|
9
|
+
} | {
|
|
10
|
+
outcome: "token refreshed using refresh token";
|
|
11
|
+
oidcClientTsUser: OidcClientTsUser;
|
|
12
|
+
};
|
|
13
|
+
export declare function loginSilent(params: {
|
|
14
|
+
oidcClientTsUserManager: OidcClientTsUserManager;
|
|
15
|
+
stateUrlParamValue_instance: string;
|
|
16
|
+
configId: string;
|
|
17
|
+
transformUrlBeforeRedirect: ((params: {
|
|
18
|
+
authorizationUrl: string;
|
|
19
|
+
isSilent: true;
|
|
20
|
+
}) => string) | undefined;
|
|
21
|
+
getExtraQueryParams: ((params: {
|
|
22
|
+
isSilent: true;
|
|
23
|
+
url: string;
|
|
24
|
+
}) => Record<string, string | undefined>) | undefined;
|
|
25
|
+
getExtraTokenParams: (() => Record<string, string | undefined>) | undefined;
|
|
26
|
+
autoLogin: boolean;
|
|
27
|
+
}): Promise<ResultOfLoginSilent>;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { Deferred } from "../tools/Deferred";
|
|
2
|
+
import { id, assert, noUndefined } from "../vendor/frontend/tsafe";
|
|
3
|
+
import { getStateData, clearStateStore } from "./StateData";
|
|
4
|
+
import { getDownlinkAndRtt } from "../tools/getDownlinkAndRtt";
|
|
5
|
+
import { getIsDev } from "../tools/isDev";
|
|
6
|
+
import { addOrUpdateSearchParam } from "../tools/urlSearchParams";
|
|
7
|
+
import { initIframeMessageProtection } from "./iframeMessageProtection";
|
|
8
|
+
export async function loginSilent(params) {
|
|
9
|
+
const { oidcClientTsUserManager, stateUrlParamValue_instance, configId, transformUrlBeforeRedirect, getExtraQueryParams, getExtraTokenParams, autoLogin } = params;
|
|
10
|
+
const dResult = new Deferred();
|
|
11
|
+
const timeoutDelayMs = (() => {
|
|
12
|
+
if (autoLogin) {
|
|
13
|
+
return 25000;
|
|
14
|
+
}
|
|
15
|
+
const downlinkAndRtt = getDownlinkAndRtt();
|
|
16
|
+
const isDev = getIsDev();
|
|
17
|
+
// Base delay is the minimum delay we should wait in any case
|
|
18
|
+
const BASE_DELAY_MS = isDev ? 9000 : 7000;
|
|
19
|
+
if (downlinkAndRtt === undefined) {
|
|
20
|
+
return BASE_DELAY_MS;
|
|
21
|
+
}
|
|
22
|
+
const { downlink, rtt } = downlinkAndRtt;
|
|
23
|
+
// Calculate dynamic delay based on RTT and downlink
|
|
24
|
+
// Add 1 to downlink to avoid division by zero
|
|
25
|
+
const dynamicDelay = rtt * 2.5 + BASE_DELAY_MS / (downlink + 1);
|
|
26
|
+
return Math.max(BASE_DELAY_MS, dynamicDelay);
|
|
27
|
+
})();
|
|
28
|
+
const { decodeEncryptedAuth, getIsEncryptedAuthResponse, clearSessionStoragePublicKey } = await initIframeMessageProtection({
|
|
29
|
+
stateUrlParamValue: stateUrlParamValue_instance
|
|
30
|
+
});
|
|
31
|
+
const timer = setTimeout(async () => {
|
|
32
|
+
dResult.resolve({
|
|
33
|
+
outcome: "failure",
|
|
34
|
+
cause: "timeout"
|
|
35
|
+
});
|
|
36
|
+
}, timeoutDelayMs);
|
|
37
|
+
const listener = async (event) => {
|
|
38
|
+
if (event.origin !== window.location.origin) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (!getIsEncryptedAuthResponse({
|
|
42
|
+
message: event.data
|
|
43
|
+
})) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const { authResponse } = await decodeEncryptedAuth({ encryptedAuthResponse: event.data });
|
|
47
|
+
const stateData = getStateData({ stateUrlParamValue: authResponse.state });
|
|
48
|
+
assert(stateData !== undefined, "765645");
|
|
49
|
+
assert(stateData.context === "iframe", "250711");
|
|
50
|
+
if (stateData.configId !== configId) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
clearTimeout(timer);
|
|
54
|
+
window.removeEventListener("message", listener);
|
|
55
|
+
dResult.resolve({
|
|
56
|
+
outcome: "got auth response from iframe",
|
|
57
|
+
authResponse
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
window.addEventListener("message", listener, false);
|
|
61
|
+
const transformUrl_oidcClientTs = (url) => {
|
|
62
|
+
add_extra_query_params: {
|
|
63
|
+
if (getExtraQueryParams === undefined) {
|
|
64
|
+
break add_extra_query_params;
|
|
65
|
+
}
|
|
66
|
+
const extraQueryParams = getExtraQueryParams({ isSilent: true, url });
|
|
67
|
+
for (const [name, value] of Object.entries(extraQueryParams)) {
|
|
68
|
+
if (value === undefined) {
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
url = addOrUpdateSearchParam({ url, name, value, encodeMethod: "www-form" });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
apply_transform_url: {
|
|
75
|
+
if (transformUrlBeforeRedirect === undefined) {
|
|
76
|
+
break apply_transform_url;
|
|
77
|
+
}
|
|
78
|
+
url = transformUrlBeforeRedirect({ authorizationUrl: url, isSilent: true });
|
|
79
|
+
}
|
|
80
|
+
return url;
|
|
81
|
+
};
|
|
82
|
+
oidcClientTsUserManager
|
|
83
|
+
.signinSilent({
|
|
84
|
+
state: id({
|
|
85
|
+
context: "iframe",
|
|
86
|
+
configId
|
|
87
|
+
}),
|
|
88
|
+
silentRequestTimeoutInSeconds: timeoutDelayMs / 1000,
|
|
89
|
+
extraTokenParams: getExtraTokenParams === undefined ? undefined : noUndefined(getExtraTokenParams()),
|
|
90
|
+
transformUrl: transformUrl_oidcClientTs
|
|
91
|
+
})
|
|
92
|
+
.then(oidcClientTsUser => {
|
|
93
|
+
assert(oidcClientTsUser !== null, "oidcClientTsUser is not supposed to be null here");
|
|
94
|
+
clearTimeout(timer);
|
|
95
|
+
window.removeEventListener("message", listener);
|
|
96
|
+
dResult.resolve({
|
|
97
|
+
outcome: "token refreshed using refresh token",
|
|
98
|
+
oidcClientTsUser
|
|
99
|
+
});
|
|
100
|
+
}, (error) => {
|
|
101
|
+
if (error.message === "Failed to fetch") {
|
|
102
|
+
// NOTE: If we got an error here it means that the fetch to the
|
|
103
|
+
// well-known oidc endpoint failed.
|
|
104
|
+
// This usually means that the server is down or that the issuerUri
|
|
105
|
+
// is not pointing to a valid oidc server.
|
|
106
|
+
// It could be a CORS error on the well-known endpoint but it's unlikely.
|
|
107
|
+
clearTimeout(timer);
|
|
108
|
+
dResult.resolve({
|
|
109
|
+
outcome: "failure",
|
|
110
|
+
cause: "can't reach well-known oidc endpoint"
|
|
111
|
+
});
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
// NOTE: Here, except error on our understanding there can't be any other
|
|
115
|
+
// error than timeout so we fail silently and let the timeout expire.
|
|
116
|
+
});
|
|
117
|
+
dResult.pr.then(result => {
|
|
118
|
+
clearSessionStoragePublicKey();
|
|
119
|
+
if (result.outcome === "failure") {
|
|
120
|
+
clearStateStore({ stateUrlParamValue: stateUrlParamValue_instance });
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
return dResult.pr;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=loginSilent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loginSilent.js","sourceRoot":"","sources":["../../../src/core/loginSilent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function notifyOtherTabsOfLogout(params: {
|
|
2
|
+
configId: string;
|
|
3
|
+
sessionId: string | undefined;
|
|
4
|
+
}): void;
|
|
5
|
+
export declare function getPrOtherTabLogout(params: {
|
|
6
|
+
sessionId: string | undefined;
|
|
7
|
+
configId: string;
|
|
8
|
+
}): {
|
|
9
|
+
prOtherTabLogout: Promise<void>;
|
|
10
|
+
};
|