@axa-fr/react-oidc 5.7.0-alpha0
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/README.md +502 -0
- package/dist/FetchToken.d.ts +10 -0
- package/dist/FetchToken.d.ts.map +1 -0
- package/dist/FetchToken.js +107 -0
- package/dist/FetchToken.js.map +1 -0
- package/dist/OidcProvider.d.ts +25 -0
- package/dist/OidcProvider.d.ts.map +1 -0
- package/dist/OidcProvider.js +133 -0
- package/dist/OidcProvider.js.map +1 -0
- package/dist/OidcSecure.d.ts +10 -0
- package/dist/OidcSecure.d.ts.map +1 -0
- package/dist/OidcSecure.js +68 -0
- package/dist/OidcSecure.js.map +1 -0
- package/dist/OidcServiceWorker.js +272 -0
- package/dist/OidcTrustedDomains.js +6 -0
- package/dist/ReactOidc.d.ts +17 -0
- package/dist/ReactOidc.d.ts.map +1 -0
- package/dist/ReactOidc.js +106 -0
- package/dist/ReactOidc.js.map +1 -0
- package/dist/User.d.ts +15 -0
- package/dist/User.d.ts.map +1 -0
- package/dist/User.js +48 -0
- package/dist/User.js.map +1 -0
- package/dist/core/default-component/AuthenticateError.component.d.ts +4 -0
- package/dist/core/default-component/AuthenticateError.component.d.ts.map +1 -0
- package/dist/core/default-component/AuthenticateError.component.js +32 -0
- package/dist/core/default-component/AuthenticateError.component.js.map +1 -0
- package/dist/core/default-component/Authenticating.component.d.ts +4 -0
- package/dist/core/default-component/Authenticating.component.d.ts.map +1 -0
- package/dist/core/default-component/Authenticating.component.js +32 -0
- package/dist/core/default-component/Authenticating.component.js.map +1 -0
- package/dist/core/default-component/Callback.component.d.ts +5 -0
- package/dist/core/default-component/Callback.component.d.ts.map +1 -0
- package/dist/core/default-component/Callback.component.js +118 -0
- package/dist/core/default-component/Callback.component.js.map +1 -0
- package/dist/core/default-component/Loading.component.d.ts +4 -0
- package/dist/core/default-component/Loading.component.d.ts.map +1 -0
- package/dist/core/default-component/Loading.component.js +29 -0
- package/dist/core/default-component/Loading.component.js.map +1 -0
- package/dist/core/default-component/ServiceWorkerInstall.component.d.ts +4 -0
- package/dist/core/default-component/ServiceWorkerInstall.component.d.ts.map +1 -0
- package/dist/core/default-component/ServiceWorkerInstall.component.js +122 -0
- package/dist/core/default-component/ServiceWorkerInstall.component.js.map +1 -0
- package/dist/core/default-component/ServiceWorkerNotSupported.component.d.ts +4 -0
- package/dist/core/default-component/ServiceWorkerNotSupported.component.d.ts.map +1 -0
- package/dist/core/default-component/ServiceWorkerNotSupported.component.js +32 -0
- package/dist/core/default-component/ServiceWorkerNotSupported.component.js.map +1 -0
- package/dist/core/default-component/SessionLost.component.d.ts +4 -0
- package/dist/core/default-component/SessionLost.component.d.ts.map +1 -0
- package/dist/core/default-component/SessionLost.component.js +14 -0
- package/dist/core/default-component/SessionLost.component.js.map +1 -0
- package/dist/core/default-component/SilentCallback.component.d.ts +4 -0
- package/dist/core/default-component/SilentCallback.component.d.ts.map +1 -0
- package/dist/core/default-component/SilentCallback.component.js +96 -0
- package/dist/core/default-component/SilentCallback.component.js.map +1 -0
- package/dist/core/default-component/index.d.ts +7 -0
- package/dist/core/default-component/index.d.ts.map +1 -0
- package/dist/core/default-component/index.js +20 -0
- package/dist/core/default-component/index.js.map +1 -0
- package/dist/core/routes/OidcRoutes.d.ts +12 -0
- package/dist/core/routes/OidcRoutes.d.ts.map +1 -0
- package/dist/core/routes/OidcRoutes.js +71 -0
- package/dist/core/routes/OidcRoutes.js.map +1 -0
- package/dist/core/routes/index.d.ts +3 -0
- package/dist/core/routes/index.d.ts.map +1 -0
- package/dist/core/routes/index.js +9 -0
- package/dist/core/routes/index.js.map +1 -0
- package/dist/core/routes/route-utils.d.ts +2 -0
- package/dist/core/routes/route-utils.d.ts.map +1 -0
- package/dist/core/routes/route-utils.js +32 -0
- package/dist/core/routes/route-utils.js.map +1 -0
- package/dist/core/routes/withRouter.d.ts +19 -0
- package/dist/core/routes/withRouter.d.ts.map +1 -0
- package/dist/core/routes/withRouter.js +33 -0
- package/dist/core/routes/withRouter.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/vanilla/index.d.ts +2 -0
- package/dist/vanilla/index.d.ts.map +1 -0
- package/dist/vanilla/index.js +6 -0
- package/dist/vanilla/index.js.map +1 -0
- package/dist/vanilla/initSession.d.ts +11 -0
- package/dist/vanilla/initSession.d.ts.map +1 -0
- package/dist/vanilla/initSession.js +72 -0
- package/dist/vanilla/initSession.js.map +1 -0
- package/dist/vanilla/initWorker.d.ts +13 -0
- package/dist/vanilla/initWorker.d.ts.map +1 -0
- package/dist/vanilla/initWorker.js +211 -0
- package/dist/vanilla/initWorker.js.map +1 -0
- package/dist/vanilla/memoryStorageBackend.d.ts +10 -0
- package/dist/vanilla/memoryStorageBackend.d.ts.map +1 -0
- package/dist/vanilla/memoryStorageBackend.js +33 -0
- package/dist/vanilla/memoryStorageBackend.js.map +1 -0
- package/dist/vanilla/noHashQueryStringUtils.d.ts +5 -0
- package/dist/vanilla/noHashQueryStringUtils.d.ts.map +1 -0
- package/dist/vanilla/noHashQueryStringUtils.js +31 -0
- package/dist/vanilla/noHashQueryStringUtils.js.map +1 -0
- package/dist/vanilla/oidc.d.ts +77 -0
- package/dist/vanilla/oidc.d.ts.map +1 -0
- package/dist/vanilla/oidc.js +814 -0
- package/dist/vanilla/oidc.js.map +1 -0
- package/dist/vanilla/timer.d.ts +8 -0
- package/dist/vanilla/timer.d.ts.map +1 -0
- package/dist/vanilla/timer.js +135 -0
- package/dist/vanilla/timer.js.map +1 -0
- package/package.json +73 -0
- package/src/App.css +38 -0
- package/src/App.specold.tsx +46 -0
- package/src/App.tsx +61 -0
- package/src/FetchUser.tsx +53 -0
- package/src/Home.tsx +20 -0
- package/src/MultiAuth.tsx +114 -0
- package/src/Profile.tsx +77 -0
- package/src/configurations.ts +53 -0
- package/src/index.css +13 -0
- package/src/index.tsx +9 -0
- package/src/logo.svg +7 -0
- package/src/oidc/FetchToken.tsx +51 -0
- package/src/oidc/OidcProvider.tsx +165 -0
- package/src/oidc/OidcSecure.tsx +32 -0
- package/src/oidc/ReactOidc.tsx +112 -0
- package/src/oidc/User.ts +38 -0
- package/src/oidc/core/default-component/AuthenticateError.component.tsx +13 -0
- package/src/oidc/core/default-component/Authenticating.component.tsx +13 -0
- package/src/oidc/core/default-component/Callback.component.tsx +49 -0
- package/src/oidc/core/default-component/Loading.component.tsx +10 -0
- package/src/oidc/core/default-component/ServiceWorkerInstall.component.tsx +51 -0
- package/src/oidc/core/default-component/ServiceWorkerNotSupported.component.tsx +13 -0
- package/src/oidc/core/default-component/SessionLost.component.tsx +14 -0
- package/src/oidc/core/default-component/SilentCallback.component.tsx +31 -0
- package/src/oidc/core/default-component/index.ts +6 -0
- package/src/oidc/core/routes/OidcRoutes.spec.tsx +16 -0
- package/src/oidc/core/routes/OidcRoutes.tsx +69 -0
- package/src/oidc/core/routes/__snapshots__/OidcRoutes.spec.tsx.snap +7 -0
- package/src/oidc/core/routes/index.ts +2 -0
- package/src/oidc/core/routes/route-utils.spec.ts +9 -0
- package/src/oidc/core/routes/route-utils.ts +34 -0
- package/src/oidc/core/routes/withRouter.spec.tsx +48 -0
- package/src/oidc/core/routes/withRouter.tsx +60 -0
- package/src/oidc/index.ts +5 -0
- package/src/oidc/vanilla/OidcServiceWorker.js +272 -0
- package/src/oidc/vanilla/OidcTrustedDomains.js +6 -0
- package/src/oidc/vanilla/index.ts +1 -0
- package/src/oidc/vanilla/initSession.ts +36 -0
- package/src/oidc/vanilla/initWorker.ts +153 -0
- package/src/oidc/vanilla/memoryStorageBackend.ts +33 -0
- package/src/oidc/vanilla/noHashQueryStringUtils.ts +7 -0
- package/src/oidc/vanilla/oidc.ts +600 -0
- package/src/oidc/vanilla/timer.ts +157 -0
- package/src/override/AuthenticateError.component.tsx +14 -0
- package/src/override/Authenticating.component.tsx +14 -0
- package/src/override/Callback.component.tsx +13 -0
- package/src/override/Loading.component.tsx +13 -0
- package/src/override/ServiceWorkerNotSupported.component.tsx +15 -0
- package/src/override/SessionLost.component.tsx +21 -0
- package/src/override/style.ts +10 -0
- package/src/setupTests.js +5 -0
- package/tsconfig.json +38 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.OidcProvider = void 0;
|
|
30
|
+
var react_1 = __importStar(require("react"));
|
|
31
|
+
var oidc_1 = __importDefault(require("./vanilla/oidc"));
|
|
32
|
+
var OidcRoutes_1 = __importDefault(require("./core/routes/OidcRoutes"));
|
|
33
|
+
var index_1 = require("./core/default-component/index");
|
|
34
|
+
var ServiceWorkerNotSupported_component_1 = __importDefault(require("./core/default-component/ServiceWorkerNotSupported.component"));
|
|
35
|
+
var AuthenticateError_component_1 = __importDefault(require("./core/default-component/AuthenticateError.component"));
|
|
36
|
+
var defaultEventState = { name: "", data: null };
|
|
37
|
+
var OidcSession = function (_a) {
|
|
38
|
+
var loadingComponent = _a.loadingComponent, children = _a.children, configurationName = _a.configurationName;
|
|
39
|
+
var _b = (0, react_1.useState)(true), loading = _b[0], setLoading = _b[1];
|
|
40
|
+
var getOidc = oidc_1.default.get;
|
|
41
|
+
var oidc = getOidc(configurationName);
|
|
42
|
+
(0, react_1.useEffect)(function () {
|
|
43
|
+
var isMounted = true;
|
|
44
|
+
if (oidc) {
|
|
45
|
+
oidc.tryKeepExistingSessionAsync().then(function () {
|
|
46
|
+
if (isMounted) {
|
|
47
|
+
setLoading(false);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return function () {
|
|
52
|
+
isMounted = false;
|
|
53
|
+
};
|
|
54
|
+
}, [oidc, configurationName]);
|
|
55
|
+
var LoadingComponent = loadingComponent;
|
|
56
|
+
return (react_1.default.createElement(react_1.default.Fragment, null, loading ? (react_1.default.createElement(LoadingComponent, { configurationName: configurationName })) : (react_1.default.createElement(react_1.default.Fragment, null, children))));
|
|
57
|
+
};
|
|
58
|
+
var Switch = function (_a) {
|
|
59
|
+
var isLoading = _a.isLoading, loadingComponent = _a.loadingComponent, children = _a.children, configurationName = _a.configurationName;
|
|
60
|
+
var LoadingComponent = loadingComponent;
|
|
61
|
+
if (isLoading) {
|
|
62
|
+
return react_1.default.createElement(LoadingComponent, { configurationName: configurationName }, children);
|
|
63
|
+
}
|
|
64
|
+
return react_1.default.createElement(react_1.default.Fragment, null, children);
|
|
65
|
+
};
|
|
66
|
+
var OidcProvider = function (_a) {
|
|
67
|
+
var children = _a.children, configuration = _a.configuration, _b = _a.configurationName, configurationName = _b === void 0 ? "default" : _b, _c = _a.callbackSuccessComponent, callbackSuccessComponent = _c === void 0 ? index_1.CallBackSuccess : _c, _d = _a.callbackErrorComponent, callbackErrorComponent = _d === void 0 ? index_1.AuthenticateError : _d, _e = _a.authenticatingComponent, authenticatingComponent = _e === void 0 ? index_1.Authenticating : _e, _f = _a.loadingComponent, loadingComponent = _f === void 0 ? index_1.Loading : _f, _g = _a.serviceWorkerNotSupportedComponent, serviceWorkerNotSupportedComponent = _g === void 0 ? ServiceWorkerNotSupported_component_1.default : _g, _h = _a.authenticatingErrorComponent, authenticatingErrorComponent = _h === void 0 ? AuthenticateError_component_1.default : _h, _j = _a.sessionLostComponent, sessionLostComponent = _j === void 0 ? index_1.SessionLost : _j, _k = _a.onSessionLost, onSessionLost = _k === void 0 ? null : _k;
|
|
68
|
+
var getOidc = function (configurationName) {
|
|
69
|
+
if (configurationName === void 0) { configurationName = "default"; }
|
|
70
|
+
return oidc_1.default.getOrCreate(configuration, configurationName);
|
|
71
|
+
};
|
|
72
|
+
var _l = (0, react_1.useState)(true), loading = _l[0], setLoading = _l[1];
|
|
73
|
+
var _m = (0, react_1.useState)(defaultEventState), event = _m[0], setEvent = _m[1];
|
|
74
|
+
var _o = (0, react_1.useState)("default"), currentConfigurationName = _o[0], setConfigurationName = _o[1];
|
|
75
|
+
(0, react_1.useEffect)(function () {
|
|
76
|
+
var oidc = getOidc(configurationName);
|
|
77
|
+
var newSubscriptionId = oidc.subscriveEvents(function (name, data) {
|
|
78
|
+
if (name == oidc_1.default.eventNames.refreshTokensAsync_error) {
|
|
79
|
+
if (onSessionLost != null) {
|
|
80
|
+
onSessionLost();
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
setEvent({ name: name, data: data });
|
|
84
|
+
}
|
|
85
|
+
else if (name == oidc_1.default.eventNames.loginAsync_begin
|
|
86
|
+
|| name == oidc_1.default.eventNames.loginCallbackAsync_end
|
|
87
|
+
|| name == oidc_1.default.eventNames.loginAsync_error
|
|
88
|
+
|| name == oidc_1.default.eventNames.loginCallbackAsync_error) {
|
|
89
|
+
setEvent({ name: name, data: data });
|
|
90
|
+
}
|
|
91
|
+
else if (name == oidc_1.default.eventNames.service_worker_not_supported_by_browser && configuration.service_worker_only === true) {
|
|
92
|
+
setEvent({ name: name, data: data });
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
setConfigurationName(configurationName);
|
|
96
|
+
setLoading(false);
|
|
97
|
+
return function () {
|
|
98
|
+
var previousOidc = getOidc(configurationName);
|
|
99
|
+
previousOidc.removeEventSubscription(newSubscriptionId);
|
|
100
|
+
setEvent(defaultEventState);
|
|
101
|
+
};
|
|
102
|
+
}, [configuration, configurationName]);
|
|
103
|
+
var SessionLostComponent = sessionLostComponent;
|
|
104
|
+
var AuthenticatingComponent = authenticatingComponent;
|
|
105
|
+
var LoadingComponent = loadingComponent;
|
|
106
|
+
var ServiceWorkerNotSupportedComponent = serviceWorkerNotSupportedComponent;
|
|
107
|
+
var AuthenticatingErrorComponent = authenticatingErrorComponent;
|
|
108
|
+
var isLoading = (loading || (currentConfigurationName != configurationName));
|
|
109
|
+
var eventName = event.name;
|
|
110
|
+
switch (eventName) {
|
|
111
|
+
case oidc_1.default.eventNames.service_worker_not_supported_by_browser:
|
|
112
|
+
return react_1.default.createElement(Switch, { loadingComponent: LoadingComponent, isLoading: isLoading, configurationName: configurationName },
|
|
113
|
+
react_1.default.createElement(ServiceWorkerNotSupportedComponent, { configurationName: configurationName }));
|
|
114
|
+
case oidc_1.default.eventNames.loginAsync_begin:
|
|
115
|
+
return react_1.default.createElement(Switch, { loadingComponent: LoadingComponent, isLoading: isLoading, configurationName: configurationName },
|
|
116
|
+
react_1.default.createElement(AuthenticatingComponent, { configurationName: configurationName }));
|
|
117
|
+
case oidc_1.default.eventNames.loginAsync_error:
|
|
118
|
+
case oidc_1.default.eventNames.loginCallbackAsync_error:
|
|
119
|
+
return react_1.default.createElement(Switch, { loadingComponent: LoadingComponent, isLoading: isLoading, configurationName: configurationName },
|
|
120
|
+
react_1.default.createElement(AuthenticatingErrorComponent, { configurationName: configurationName }),
|
|
121
|
+
";");
|
|
122
|
+
case oidc_1.default.eventNames.refreshTokensAsync_error:
|
|
123
|
+
return react_1.default.createElement(Switch, { loadingComponent: LoadingComponent, isLoading: isLoading, configurationName: configurationName },
|
|
124
|
+
react_1.default.createElement(SessionLostComponent, { configurationName: configurationName }));
|
|
125
|
+
default:
|
|
126
|
+
return (react_1.default.createElement(Switch, { loadingComponent: LoadingComponent, isLoading: isLoading, configurationName: configurationName },
|
|
127
|
+
react_1.default.createElement(OidcRoutes_1.default, { redirect_uri: configuration.redirect_uri, silent_redirect_uri: configuration.silent_redirect_uri, callbackSuccessComponent: callbackSuccessComponent, callbackErrorComponent: callbackErrorComponent, authenticatingComponent: authenticatingComponent, configurationName: configurationName },
|
|
128
|
+
react_1.default.createElement(OidcSession, { loadingComponent: LoadingComponent, configurationName: configurationName }, children))));
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
exports.OidcProvider = OidcProvider;
|
|
132
|
+
exports.default = exports.OidcProvider;
|
|
133
|
+
//# sourceMappingURL=OidcProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OidcProvider.js","sourceRoot":"","sources":["../src/oidc/OidcProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PropsWithChildren, FC } from 'react';
|
|
2
|
+
import { StringMap } from "./vanilla/oidc";
|
|
3
|
+
export declare type OidcSecureProps = {
|
|
4
|
+
callbackPath?: string;
|
|
5
|
+
extras?: StringMap;
|
|
6
|
+
configurationName?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const OidcSecure: FC<PropsWithChildren<OidcSecureProps>>;
|
|
9
|
+
export declare const withOidcSecure: (WrappedComponent: any, callbackPath?: any) => (props: any) => JSX.Element;
|
|
10
|
+
//# sourceMappingURL=OidcSecure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OidcSecure.d.ts","sourceRoot":"","sources":["../src/oidc/OidcSecure.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAY,iBAAiB,EAAE,EAAE,EAAC,MAAM,OAAO,CAAC;AAE9D,OAAa,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAE/C,oBAAY,eAAe,GAAG;IAC1B,YAAY,CAAC,EAAC,MAAM,CAAC;IACrB,MAAM,CAAC,EAAC,SAAS,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAe7D,CAAA;AAED,eAAO,MAAM,cAAc,4EAI1B,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.withOidcSecure = exports.OidcSecure = void 0;
|
|
41
|
+
var react_1 = __importStar(require("react"));
|
|
42
|
+
var oidc_1 = __importDefault(require("./vanilla/oidc"));
|
|
43
|
+
var OidcSecure = function (_a) {
|
|
44
|
+
var children = _a.children, _b = _a.callbackPath, callbackPath = _b === void 0 ? null : _b, _c = _a.extras, extras = _c === void 0 ? null : _c, _d = _a.configurationName, configurationName = _d === void 0 ? "default" : _d;
|
|
45
|
+
var getOidc = oidc_1.default.get;
|
|
46
|
+
var oidc = getOidc(configurationName);
|
|
47
|
+
(0, react_1.useEffect)(function () {
|
|
48
|
+
if (!oidc.tokens) {
|
|
49
|
+
oidc.loginAsync(callbackPath, extras);
|
|
50
|
+
}
|
|
51
|
+
return function () {
|
|
52
|
+
};
|
|
53
|
+
}, [configurationName, callbackPath, extras]);
|
|
54
|
+
if (!oidc.tokens) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
return react_1.default.createElement(react_1.default.Fragment, null, children);
|
|
58
|
+
};
|
|
59
|
+
exports.OidcSecure = OidcSecure;
|
|
60
|
+
var withOidcSecure = function (WrappedComponent, callbackPath) {
|
|
61
|
+
if (callbackPath === void 0) { callbackPath = null; }
|
|
62
|
+
return function (props) {
|
|
63
|
+
return react_1.default.createElement(exports.OidcSecure, { callbackPath: callbackPath },
|
|
64
|
+
react_1.default.createElement(WrappedComponent, __assign({}, props)));
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
exports.withOidcSecure = withOidcSecure;
|
|
68
|
+
//# sourceMappingURL=OidcSecure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OidcSecure.js","sourceRoot":"","sources":["../src/oidc/OidcSecure.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA8D;AAE9D,wDAA+C;AAQxC,IAAM,UAAU,GAA2C,UAAC,EAAuE;QAAtE,QAAQ,cAAA,EAAE,oBAAiB,EAAjB,YAAY,mBAAC,IAAI,KAAA,EAAE,cAAW,EAAX,MAAM,mBAAC,IAAI,KAAA,EAAE,yBAA2B,EAA3B,iBAAiB,mBAAC,SAAS,KAAA;IACrI,IAAM,OAAO,GAAI,cAAI,CAAC,GAAG,CAAC;IAC1B,IAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACxC,IAAA,iBAAS,EAAC;QACN,IAAG,CAAC,IAAI,CAAC,MAAM,EAAC;YACZ,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;SACzC;QACD,OAAO;QACP,CAAC,CAAA;IACL,CAAC,EAAE,CAAC,iBAAiB,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAA;IAE7C,IAAG,CAAC,IAAI,CAAC,MAAM,EAAC;QACd,OAAO,IAAI,CAAC;KACb;IACD,OAAO,8DAAG,QAAQ,CAAI,CAAA;AAC1B,CAAC,CAAA;AAfY,QAAA,UAAU,cAetB;AAEM,IAAM,cAAc,GAAG,UAC5B,gBAAgB,EAAE,YAAiB;IAAjB,6BAAA,EAAA,mBAAiB;IAChC,OAAA,UAAC,KAAK;QACT,OAAO,8BAAC,kBAAU,IAAC,YAAY,EAAE,YAAY;YAAE,8BAAC,gBAAgB,eAAK,KAAK,EAAI,CAAa,CAAC;IAC9F,CAAC;AAFI,CAEJ,CAAC;AAJW,QAAA,cAAc,kBAIzB"}
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
this.importScripts('OidcTrustedDomains.js');
|
|
2
|
+
|
|
3
|
+
const id = Math.round(new Date().getTime() / 1000).toString();
|
|
4
|
+
|
|
5
|
+
const keepAliveJsonFilename = "OidcKeepAliveServiceWorker.json";
|
|
6
|
+
const handleInstall = (event) => {
|
|
7
|
+
console.log('[OidcServiceWorker] service worker installed ' + id);
|
|
8
|
+
self.skipWaiting();
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const handleActivate = () => {
|
|
12
|
+
console.log('[OidcServiceWorker] service worker activated ' + id);
|
|
13
|
+
self.clients.claim();
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
let currentLoginCallbackConfigurationName = null;
|
|
17
|
+
let database = {
|
|
18
|
+
default: {
|
|
19
|
+
configurationName: "default",
|
|
20
|
+
tokens: null,
|
|
21
|
+
items:[],
|
|
22
|
+
oidcServerConfiguration: null
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const countLetter = (str, find)=> {
|
|
27
|
+
return (str.split(find)).length - 1;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function extractAccessTokenPayload(accessToken) {
|
|
31
|
+
try{
|
|
32
|
+
if (!accessToken) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
if(countLetter(accessToken,'.') === 2) {
|
|
36
|
+
return JSON.parse(atob(accessToken.split('.')[1]));
|
|
37
|
+
} else {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
} catch (e) {
|
|
41
|
+
console.warn(e);
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function hideTokens(currentDatabaseElement) {
|
|
47
|
+
const configurationName = currentDatabaseElement.configurationName;
|
|
48
|
+
return (response) => {
|
|
49
|
+
return response.json().then(tokens => {
|
|
50
|
+
currentDatabaseElement.tokens = tokens;
|
|
51
|
+
const secureTokens = {
|
|
52
|
+
...tokens,
|
|
53
|
+
access_token: ACCESS_TOKEN +"_" + configurationName,
|
|
54
|
+
refresh_token: REFRESH_TOKEN + "_" + configurationName,
|
|
55
|
+
};
|
|
56
|
+
const body = JSON.stringify(secureTokens)
|
|
57
|
+
return new Response(body, response);
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const getCurrentDatabasesTokenEndpoint = (database, url) => {
|
|
63
|
+
const databases = [];
|
|
64
|
+
for (const [key, value] of Object.entries(database)) {
|
|
65
|
+
if(value && value.oidcServerConfiguration !=null && url.startsWith(value.oidcServerConfiguration.tokenEndpoint)){
|
|
66
|
+
databases.push(value);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return databases;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const getCurrentDatabaseDomain = (database, url) => {
|
|
73
|
+
for (const [key, currentDatabase] of Object.entries(database)) {
|
|
74
|
+
|
|
75
|
+
const oidcServerConfiguration = currentDatabase.oidcServerConfiguration;
|
|
76
|
+
const domainsToSendTokens = oidcServerConfiguration != null ? [
|
|
77
|
+
oidcServerConfiguration.userInfoEndpoint, ...trustedDomains[key]
|
|
78
|
+
] : [...trustedDomains[key]];
|
|
79
|
+
|
|
80
|
+
let hasToSendToken = false;
|
|
81
|
+
for(let i=0;i<domainsToSendTokens.length;i++) {
|
|
82
|
+
const domain = domainsToSendTokens[i];
|
|
83
|
+
if (url.startsWith(domain)) {
|
|
84
|
+
hasToSendToken = true;
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if(hasToSendToken){
|
|
90
|
+
if(!currentDatabase.tokens) {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
return currentDatabase;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const serializeHeaders = (headers) => {
|
|
101
|
+
let headersObj = {};
|
|
102
|
+
for (let key of headers.keys()) {
|
|
103
|
+
headersObj[key] = headers.get(key);
|
|
104
|
+
}
|
|
105
|
+
return headersObj;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
const REFRESH_TOKEN = 'REFRESH_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER';
|
|
109
|
+
const ACCESS_TOKEN = 'ACCESS_TOKEN_SECURED_BY_OIDC_SERVICE_WORKER';
|
|
110
|
+
|
|
111
|
+
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
112
|
+
|
|
113
|
+
const keepAliveAsync = async (event) => {
|
|
114
|
+
const originalRequest = event.request;
|
|
115
|
+
const isFromVanilla = originalRequest.headers.has('oidc-vanilla');
|
|
116
|
+
if(!isFromVanilla) {
|
|
117
|
+
await sleep(15000);
|
|
118
|
+
}
|
|
119
|
+
const init = {"status": 200, "statusText": 'oidc-service-worker'};
|
|
120
|
+
return new Response('{}', init);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const handleFetch = async (event) => {
|
|
124
|
+
const originalRequest = event.request;
|
|
125
|
+
|
|
126
|
+
if(originalRequest.url.includes(keepAliveJsonFilename) ){
|
|
127
|
+
event.respondWith(keepAliveAsync(event));
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const currentDatabaseForRequestAccessToken = getCurrentDatabaseDomain(database, originalRequest.url);
|
|
132
|
+
if(currentDatabaseForRequestAccessToken && currentDatabaseForRequestAccessToken.tokens) {
|
|
133
|
+
const newRequest = new Request(originalRequest, {
|
|
134
|
+
headers: {
|
|
135
|
+
...serializeHeaders(originalRequest.headers),
|
|
136
|
+
authorization: "Bearer " + currentDatabaseForRequestAccessToken.tokens.access_token
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
event.waitUntil(event.respondWith(fetch(newRequest)));
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if(event.request.method !== "POST"){
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
let currentDatabase = null;
|
|
146
|
+
const currentDatabases = getCurrentDatabasesTokenEndpoint(database, originalRequest.url);
|
|
147
|
+
const numberDatabase = currentDatabases.length;
|
|
148
|
+
if(numberDatabase > 0) {
|
|
149
|
+
const maPromesse = new Promise((resolve, reject) => {
|
|
150
|
+
const response = originalRequest.clone().text().then(actualBody => {
|
|
151
|
+
if(actualBody.includes(REFRESH_TOKEN)) {
|
|
152
|
+
let newBody = actualBody;
|
|
153
|
+
for(let i= 0;i<numberDatabase;i++){
|
|
154
|
+
const currentDb = currentDatabases[i];
|
|
155
|
+
const key = REFRESH_TOKEN + '_'+ currentDb.configurationName;
|
|
156
|
+
if(currentDb && currentDb.tokens != null && actualBody.includes(key)) {
|
|
157
|
+
newBody = newBody.replace(key, encodeURIComponent(currentDb.tokens.refresh_token));
|
|
158
|
+
currentDatabase = currentDb;
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return fetch(originalRequest, {
|
|
163
|
+
body: newBody,
|
|
164
|
+
method: originalRequest.method,
|
|
165
|
+
headers: {
|
|
166
|
+
...serializeHeaders(originalRequest.headers),
|
|
167
|
+
},
|
|
168
|
+
mode: originalRequest.mode,
|
|
169
|
+
cache: originalRequest.cache,
|
|
170
|
+
redirect: originalRequest.redirect,
|
|
171
|
+
referrer: originalRequest.referrer,
|
|
172
|
+
credentials: originalRequest.credentials,
|
|
173
|
+
integrity: originalRequest.integrity
|
|
174
|
+
}).then(hideTokens(currentDatabase));
|
|
175
|
+
} else if(currentLoginCallbackConfigurationName){
|
|
176
|
+
currentDatabase = database[currentLoginCallbackConfigurationName];
|
|
177
|
+
currentLoginCallbackConfigurationName=null;
|
|
178
|
+
return fetch(originalRequest,{
|
|
179
|
+
body: actualBody,
|
|
180
|
+
method: originalRequest.method,
|
|
181
|
+
headers: {
|
|
182
|
+
...serializeHeaders(originalRequest.headers),
|
|
183
|
+
},
|
|
184
|
+
mode: originalRequest.mode,
|
|
185
|
+
cache: originalRequest.cache,
|
|
186
|
+
redirect: originalRequest.redirect,
|
|
187
|
+
referrer: originalRequest.referrer,
|
|
188
|
+
credentials: originalRequest.credentials,
|
|
189
|
+
integrity: originalRequest.integrity
|
|
190
|
+
}).then(hideTokens(currentDatabase));
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
response.then(r => {
|
|
194
|
+
if(r !== undefined){
|
|
195
|
+
resolve(r);
|
|
196
|
+
}
|
|
197
|
+
}).catch(err => {
|
|
198
|
+
if(err !== undefined) {
|
|
199
|
+
reject(err);
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
event.waitUntil(event.respondWith(maPromesse));
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
self.addEventListener('install', handleInstall);
|
|
208
|
+
self.addEventListener('activate', handleActivate);
|
|
209
|
+
self.addEventListener('fetch', handleFetch);
|
|
210
|
+
|
|
211
|
+
addEventListener('message', event => {
|
|
212
|
+
const port = event.ports[0];
|
|
213
|
+
const data = event.data;
|
|
214
|
+
const configurationName = data.configurationName;
|
|
215
|
+
let currentDatabase = database[configurationName];
|
|
216
|
+
|
|
217
|
+
if(!currentDatabase){
|
|
218
|
+
database[configurationName] = {
|
|
219
|
+
tokens: null,
|
|
220
|
+
items:[],
|
|
221
|
+
oidcServerConfiguration: null,
|
|
222
|
+
configurationName: configurationName,
|
|
223
|
+
};
|
|
224
|
+
currentDatabase = database[configurationName];
|
|
225
|
+
if(!trustedDomains[configurationName]) {
|
|
226
|
+
trustedDomains[configurationName] = [];
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
switch (data.type){
|
|
230
|
+
case "loadItems":
|
|
231
|
+
port.postMessage(database[configurationName].items);
|
|
232
|
+
return;
|
|
233
|
+
case "clear":
|
|
234
|
+
currentDatabase.tokens = null;
|
|
235
|
+
currentDatabase.items = null;
|
|
236
|
+
port.postMessage({configurationName});
|
|
237
|
+
return;
|
|
238
|
+
case "init":
|
|
239
|
+
currentDatabase.oidcServerConfiguration = data.data.oidcServerConfiguration;
|
|
240
|
+
const where = data.data.where;
|
|
241
|
+
if(where === "loginCallbackAsync" || where === "tryKeepExistingSessionAsync") {
|
|
242
|
+
currentLoginCallbackConfigurationName = configurationName;
|
|
243
|
+
} else{
|
|
244
|
+
currentLoginCallbackConfigurationName = null;
|
|
245
|
+
}
|
|
246
|
+
if(!currentDatabase.tokens){
|
|
247
|
+
port.postMessage({
|
|
248
|
+
tokens:null,
|
|
249
|
+
configurationName});
|
|
250
|
+
} else {
|
|
251
|
+
port.postMessage({
|
|
252
|
+
tokens: {
|
|
253
|
+
...currentDatabase.tokens,
|
|
254
|
+
refresh_token: REFRESH_TOKEN + "_" + configurationName,
|
|
255
|
+
access_token: ACCESS_TOKEN + "_" + configurationName
|
|
256
|
+
},
|
|
257
|
+
configurationName
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
return;
|
|
261
|
+
|
|
262
|
+
case "getAccessTokenPayload":
|
|
263
|
+
const accessTokenPayload = extractAccessTokenPayload(currentDatabase.tokens.access_token);
|
|
264
|
+
port.postMessage({configurationName, accessTokenPayload});
|
|
265
|
+
return;
|
|
266
|
+
default:
|
|
267
|
+
currentDatabase.items = data.data;
|
|
268
|
+
port.postMessage({configurationName});
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { StringMap } from "./vanilla/oidc";
|
|
2
|
+
export declare const useOidc: (configurationName?: string) => {
|
|
3
|
+
login: (callbackPath?: string | undefined, extras?: StringMap) => any;
|
|
4
|
+
logout: (callbackPath?: string | undefined) => any;
|
|
5
|
+
isAuthenticated: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare type OidcAccessToken = {
|
|
8
|
+
accessToken?: any;
|
|
9
|
+
accessTokenPayload?: any;
|
|
10
|
+
};
|
|
11
|
+
export declare const useOidcAccessToken: (configurationName?: string) => OidcAccessToken;
|
|
12
|
+
export declare type OidcIdToken = {
|
|
13
|
+
idToken?: any;
|
|
14
|
+
idTokenPayload?: any;
|
|
15
|
+
};
|
|
16
|
+
export declare const useOidcIdToken: (configurationName?: string) => OidcIdToken;
|
|
17
|
+
//# sourceMappingURL=ReactOidc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReactOidc.d.ts","sourceRoot":"","sources":["../src/oidc/ReactOidc.tsx"],"names":[],"mappings":"AACA,OAAa,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAG/C,eAAO,MAAM,OAAO;2BAGY,MAAM,GAAG,SAAS,WAAqB,SAAS;4BAG9C,MAAM,GAAG,SAAS;;CAWnD,CAAA;AAcD,oBAAY,eAAe,GAAG;IAC1B,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,kBAAkB,CAAC,EAAE,GAAG,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,kBAAkB,iDA0B9B,CAAA;AAcD,oBAAY,WAAW,GAAG;IACtB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,cAAc,CAAC,EAAE,GAAG,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,cAAc,6CA0B1B,CAAA"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.useOidcIdToken = exports.useOidcAccessToken = exports.useOidc = void 0;
|
|
7
|
+
var react_1 = require("react");
|
|
8
|
+
var oidc_1 = __importDefault(require("./vanilla/oidc"));
|
|
9
|
+
var defaultConfigurationName = "default";
|
|
10
|
+
var useOidc = function (configurationName) {
|
|
11
|
+
if (configurationName === void 0) { configurationName = defaultConfigurationName; }
|
|
12
|
+
var getOidc = oidc_1.default.get;
|
|
13
|
+
var login = function (callbackPath, extras) {
|
|
14
|
+
if (callbackPath === void 0) { callbackPath = undefined; }
|
|
15
|
+
if (extras === void 0) { extras = null; }
|
|
16
|
+
return getOidc(configurationName).loginAsync(callbackPath, extras);
|
|
17
|
+
};
|
|
18
|
+
var logout = function (callbackPath) {
|
|
19
|
+
if (callbackPath === void 0) { callbackPath = undefined; }
|
|
20
|
+
return getOidc(configurationName).logoutAsync(callbackPath);
|
|
21
|
+
};
|
|
22
|
+
var isAuthenticated = false;
|
|
23
|
+
var oidc = getOidc(configurationName);
|
|
24
|
+
if (oidc) {
|
|
25
|
+
isAuthenticated = getOidc(configurationName).tokens != null;
|
|
26
|
+
}
|
|
27
|
+
return { login: login, logout: logout, isAuthenticated: isAuthenticated };
|
|
28
|
+
};
|
|
29
|
+
exports.useOidc = useOidc;
|
|
30
|
+
var accessTokenInitialState = { accessToken: null, accessTokenPayload: null };
|
|
31
|
+
var initTokens = function (configurationName) {
|
|
32
|
+
var getOidc = oidc_1.default.get;
|
|
33
|
+
var oidc = getOidc(configurationName);
|
|
34
|
+
if (oidc.tokens) {
|
|
35
|
+
var tokens = oidc.tokens;
|
|
36
|
+
return { accessToken: tokens.accessToken, accessTokenPayload: tokens.accessTokenPayload };
|
|
37
|
+
}
|
|
38
|
+
return accessTokenInitialState;
|
|
39
|
+
};
|
|
40
|
+
var useOidcAccessToken = function (configurationName) {
|
|
41
|
+
if (configurationName === void 0) { configurationName = defaultConfigurationName; }
|
|
42
|
+
var getOidc = oidc_1.default.get;
|
|
43
|
+
var _a = (0, react_1.useState)(initTokens(configurationName)), state = _a[0], setAccessToken = _a[1];
|
|
44
|
+
(0, react_1.useEffect)(function () {
|
|
45
|
+
var isMounted = true;
|
|
46
|
+
var oidc = getOidc(configurationName);
|
|
47
|
+
if (oidc.tokens) {
|
|
48
|
+
var tokens = oidc.tokens;
|
|
49
|
+
setAccessToken({ accessToken: tokens.accessToken, accessTokenPayload: tokens.accessTokenPayload });
|
|
50
|
+
}
|
|
51
|
+
var newSubscriptionId = oidc.subscriveEvents(function (name, data) {
|
|
52
|
+
if (name == oidc_1.default.eventNames.token_renewed
|
|
53
|
+
|| name == oidc_1.default.eventNames.token_aquired) {
|
|
54
|
+
if (isMounted) {
|
|
55
|
+
var tokens = oidc.tokens;
|
|
56
|
+
setAccessToken(tokens != null ? { accessToken: tokens.accessToken, accessTokenPayload: tokens.accessTokenPayload } : accessTokenInitialState);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
return function () {
|
|
61
|
+
isMounted = false;
|
|
62
|
+
oidc.removeEventSubscription(newSubscriptionId);
|
|
63
|
+
};
|
|
64
|
+
}, [configurationName]);
|
|
65
|
+
return state;
|
|
66
|
+
};
|
|
67
|
+
exports.useOidcAccessToken = useOidcAccessToken;
|
|
68
|
+
var idTokenInitialState = { idToken: null, idTokenPayload: null };
|
|
69
|
+
var initIdToken = function (configurationName) {
|
|
70
|
+
var getOidc = oidc_1.default.get;
|
|
71
|
+
var oidc = getOidc(configurationName);
|
|
72
|
+
if (oidc.tokens) {
|
|
73
|
+
var tokens = oidc.tokens;
|
|
74
|
+
return { idToken: tokens.idToken, idTokenPayload: tokens.idTokenPayload };
|
|
75
|
+
}
|
|
76
|
+
return idTokenInitialState;
|
|
77
|
+
};
|
|
78
|
+
var useOidcIdToken = function (configurationName) {
|
|
79
|
+
if (configurationName === void 0) { configurationName = defaultConfigurationName; }
|
|
80
|
+
var getOidc = oidc_1.default.get;
|
|
81
|
+
var _a = (0, react_1.useState)(initIdToken(configurationName)), state = _a[0], setIDToken = _a[1];
|
|
82
|
+
(0, react_1.useEffect)(function () {
|
|
83
|
+
var isMounted = true;
|
|
84
|
+
var oidc = getOidc(configurationName);
|
|
85
|
+
if (oidc.tokens) {
|
|
86
|
+
var tokens = oidc.tokens;
|
|
87
|
+
setIDToken({ idToken: tokens.idToken, idTokenPayload: tokens.idTokenPayload });
|
|
88
|
+
}
|
|
89
|
+
var newSubscriptionId = oidc.subscriveEvents(function (name, data) {
|
|
90
|
+
if (name == oidc_1.default.eventNames.token_renewed
|
|
91
|
+
|| name == oidc_1.default.eventNames.token_aquired) {
|
|
92
|
+
if (isMounted) {
|
|
93
|
+
var tokens = oidc.tokens;
|
|
94
|
+
setIDToken(tokens != null ? { idToken: tokens.idToken, idTokenPayload: tokens.idTokenPayload } : idTokenInitialState);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
return function () {
|
|
99
|
+
isMounted = false;
|
|
100
|
+
oidc.removeEventSubscription(newSubscriptionId);
|
|
101
|
+
};
|
|
102
|
+
}, [configurationName]);
|
|
103
|
+
return state;
|
|
104
|
+
};
|
|
105
|
+
exports.useOidcIdToken = useOidcIdToken;
|
|
106
|
+
//# sourceMappingURL=ReactOidc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReactOidc.js","sourceRoot":"","sources":["../src/oidc/ReactOidc.tsx"],"names":[],"mappings":"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"}
|
package/dist/User.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare enum OidcUserStatus {
|
|
2
|
+
Unauthenticated = "Unauthenticated",
|
|
3
|
+
Loading = "Loading user",
|
|
4
|
+
Loaded = "User loaded",
|
|
5
|
+
LoadingError = "Error loading user"
|
|
6
|
+
}
|
|
7
|
+
export declare type OidcUser = {
|
|
8
|
+
user: any;
|
|
9
|
+
status: OidcUserStatus;
|
|
10
|
+
};
|
|
11
|
+
export declare const useOidcUser: (configurationName?: string) => {
|
|
12
|
+
oidcUser: any;
|
|
13
|
+
oidcUserLoadingState: OidcUserStatus;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=User.d.ts.map
|