oidc-spa 2.3.3 → 3.0.0
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 +16 -237
- package/oidc.js.map +1 -1
- package/package.json +3 -2
- package/react.d.ts +32 -10
- package/react.js +40 -22
- package/react.js.map +1 -1
- package/src/react.tsx +103 -20
- package/tools/fnv1aHashToHex.js.map +1 -1
- package/tools/readExpirationTimeInJwt.js.map +1 -1
- package/tools/urlQueryParams.js.map +1 -1
package/README.md
CHANGED
|
@@ -21,224 +21,40 @@
|
|
|
21
21
|
<p align="center">
|
|
22
22
|
<a href="https://github.com/garronej/oidc-spa">Home</a>
|
|
23
23
|
-
|
|
24
|
-
<a href="https://
|
|
24
|
+
<a href="https://docs.oidc-spa.dev">Documentation</a>
|
|
25
25
|
</p>
|
|
26
26
|
|
|
27
27
|
An OIDC client designed for Single Page Applications, typically [Vite](https://vitejs.dev/) projects.
|
|
28
|
-
|
|
28
|
+
This is a lib that you would use, for example to enable authentication in your app with a Keycloak server.
|
|
29
|
+
oidc-spa aims at being **very easy to setup and use** even if you are not familiar with the OIDC protocol.
|
|
29
30
|
|
|
30
31
|
## Comparison with Existing Libraries
|
|
31
32
|
|
|
32
33
|
### [oidc-client-ts](https://github.com/authts/oidc-client-ts)
|
|
33
34
|
|
|
34
35
|
While `oidc-client-ts` serves as a comprehensive toolkit, our library aims to provide a simplified, ready-to-use adapter that will pass
|
|
35
|
-
any security audit
|
|
36
|
+
any security audit and that will just work out of the box on any browser.
|
|
37
|
+
We utilize `oidc-client-ts` internally but abstract away most of its intricacies.
|
|
36
38
|
|
|
37
39
|
### [react-oidc-context](https://github.com/authts/react-oidc-context)
|
|
38
40
|
|
|
39
|
-
Our library takes a modular approach to OIDC and React, treating them as separate concerns that don't necessarily have to be intertwined.
|
|
40
|
-
|
|
41
|
+
Our library takes a modular approach to OIDC and React, treating them as separate concerns that don't necessarily have to be intertwined.
|
|
42
|
+
At it's core, oidc-spa is a simple adapter that is not tie to any particular UI framework and is a good fit for projects
|
|
43
|
+
that implement strict separation of concern between the core logic of the app and the UI.
|
|
44
|
+
However we also provide adapters for React and starter project for integrating with react-router-dom or @tanstack/react-router.
|
|
41
45
|
|
|
42
|
-
|
|
46
|
+
### [keycloak-js](https://www.npmjs.com/package/keycloak-js)
|
|
43
47
|
|
|
44
|
-
|
|
45
|
-
$ yarn add oidc-spa
|
|
46
|
-
```
|
|
48
|
+
Beside the fact that this lib only works with Keycloak [it is also likely to be deprecated or overhauled](https://www.keycloak.org/2023/03/adapter-deprecation-update), it's not type-safe, and hard to get working properly.
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
## 🚀 Quick start
|
|
49
51
|
|
|
50
|
-
|
|
51
|
-
<html>
|
|
52
|
-
<body>
|
|
53
|
-
<script>
|
|
54
|
-
parent.postMessage(location.href, location.origin);
|
|
55
|
-
</script>
|
|
56
|
-
</body>
|
|
57
|
-
</html>
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Option 1: Usage without involving the UI framework
|
|
61
|
-
|
|
62
|
-
```ts
|
|
63
|
-
import { createOidc, decodeJwt } from "oidc-spa";
|
|
64
|
-
|
|
65
|
-
(async () => {
|
|
66
|
-
const oidc = await createOidc({
|
|
67
|
-
issuerUri: "https://auth.your-domain.net/auth/realms/myrealm",
|
|
68
|
-
clientId: "myclient",
|
|
69
|
-
// Optional, you can modify the url before redirection to the identity server
|
|
70
|
-
// Alternatively you can use: getExtraQueryParams: ()=> ({ ui_locales: "fr" })
|
|
71
|
-
transformUrlBeforeRedirect: url => `${url}&ui_locales=fr`
|
|
72
|
-
/**
|
|
73
|
-
* This parameter have to be provided if your App is not hosted at the origin of the subdomain.
|
|
74
|
-
* For example if your site is hosted by navigating to `https://www.example.com`
|
|
75
|
-
* you don't have to provide this parameter.
|
|
76
|
-
* On the other end if your site is hosted by navigating to `https://www.example.com/my-app`
|
|
77
|
-
* Then you want to set publicUrl to `/my-app`.
|
|
78
|
-
* If you are using Vite: `publicUrl: import.meta.env.BASE_URL`
|
|
79
|
-
* If you using Create React App: `publicUrl: process.env.PUBLIC_URL`
|
|
80
|
-
*
|
|
81
|
-
* Be mindful that `${window.location.origin}${publicUrl}/silent-sso.html` must return the `silent-sso.html` that
|
|
82
|
-
* you are supposed to have created in your `public/` directory.
|
|
83
|
-
*/
|
|
84
|
-
//publicUrl: `${window.location.origin}/my-app`
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
if (!oidc.isUserLoggedIn) {
|
|
88
|
-
// This return a promise that never resolve. Your user will be redirected to the identity server.
|
|
89
|
-
oidc.login({
|
|
90
|
-
// doesCurrentHrefRequiresAuth determines the behavior when a user gives up on loggin in and navigate back.
|
|
91
|
-
// We don't want to send him back to a authenticated route.
|
|
92
|
-
// If you are calling login because the user clicked
|
|
93
|
-
// on a 'login' button you should set doesCurrentHrefRequiresAuth to false.
|
|
94
|
-
// When you are calling login because your user navigated to a path that require authentication
|
|
95
|
-
// you should set doesCurrentHrefRequiresAuth to true
|
|
96
|
-
doesCurrentHrefRequiresAuth: false
|
|
97
|
-
//Optionally you can add some extra parameter to be added on the login url.
|
|
98
|
-
//extraQueryParams: { kc_idp_hint: "google" }
|
|
99
|
-
});
|
|
100
|
-
} else {
|
|
101
|
-
const {
|
|
102
|
-
// The accessToken is what you'll use as a Bearer token to authenticate to your APIs
|
|
103
|
-
accessToken,
|
|
104
|
-
// You can parse the idToken as a JWT to get some information about the user.
|
|
105
|
-
idToken
|
|
106
|
-
} = oidc.getTokens();
|
|
107
|
-
|
|
108
|
-
const user = decodeJwt(idToken) as {
|
|
109
|
-
// Use https://jwt.io/ to tell what's in your idToken
|
|
110
|
-
sub: string;
|
|
111
|
-
preferred_username: string;
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
console.log(`Hello ${user.preferred_username}`);
|
|
115
|
-
|
|
116
|
-
// To call when the user click on logout.
|
|
117
|
-
// You can also redirect to a custom url with { redirectTo: "specific url", url: `${location.origin}/bye` }
|
|
118
|
-
oidc.logout({ redirectTo: "home" });
|
|
119
|
-
}
|
|
120
|
-
})();
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
## Option 2: Usage directly within React
|
|
124
|
-
|
|
125
|
-
```tsx
|
|
126
|
-
import { createOidcProvider, useOidc } from "oidc-spa/react";
|
|
127
|
-
import { decodeJwt } from "oidc-spa";
|
|
128
|
-
|
|
129
|
-
const { OidcProvider } = createOidcProvider({
|
|
130
|
-
issuerUri: "https://auth.your-domain.net/auth/realms/myrealm",
|
|
131
|
-
clientId: "myclient"
|
|
132
|
-
// See above for other parameters
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
ReactDOM.render(
|
|
136
|
-
<OidcProvider
|
|
137
|
-
// Optional, it's usually so fast that a fallback is really not required.
|
|
138
|
-
fallback={<>Logging you in...</>}
|
|
139
|
-
>
|
|
140
|
-
<App />
|
|
141
|
-
</OidcProvider>,
|
|
142
|
-
document.getElementById("root")
|
|
143
|
-
);
|
|
144
|
-
|
|
145
|
-
function App() {
|
|
146
|
-
const { oidc } = useOidc();
|
|
147
|
-
|
|
148
|
-
if (!oidc.isUserLoggedIn) {
|
|
149
|
-
return (
|
|
150
|
-
<>
|
|
151
|
-
You're not logged in.
|
|
152
|
-
<button
|
|
153
|
-
onClick={() =>
|
|
154
|
-
oidc.login({
|
|
155
|
-
doesCurrentHrefRequiresAuth: false
|
|
156
|
-
//Optionally you can add some extra parameter to be added on the login url.
|
|
157
|
-
//extraQueryParams: { kc_idp_hint: "google" }
|
|
158
|
-
})
|
|
159
|
-
}
|
|
160
|
-
>
|
|
161
|
-
Login
|
|
162
|
-
</button>
|
|
163
|
-
</>
|
|
164
|
-
);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
return (
|
|
168
|
-
<AppLoggedIn
|
|
169
|
-
// You can also redirect to a custom url with { redirectTo: "specific url", url: `${location.origin}/bye` }
|
|
170
|
-
logout={() => oidc.logout({ redirectTo: "home" })}
|
|
171
|
-
/>
|
|
172
|
-
);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
function AppLoggedIn(props: { logout: () => Promise<never> }) {
|
|
176
|
-
const { logout } = props;
|
|
177
|
-
|
|
178
|
-
const { user } = useUser();
|
|
179
|
-
|
|
180
|
-
return (
|
|
181
|
-
<>
|
|
182
|
-
<h1>Hello {user.preferred_username}</h1>
|
|
183
|
-
<button onClick={logout}>Log out</button>
|
|
184
|
-
</>
|
|
185
|
-
);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
// Convenience hook to get the parsed idToken
|
|
189
|
-
// To call only when the user is logged in
|
|
190
|
-
function useUser() {
|
|
191
|
-
const { oidc } = useOidc();
|
|
192
|
-
|
|
193
|
-
if (!oidc.isUserLoggedIn) {
|
|
194
|
-
throw new Error("This hook should be used only on authenticated routes");
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
// NOTE: When idToken changes, the component get re-rendered
|
|
198
|
-
// so idToken can be used in dependency arrays. ✅
|
|
199
|
-
const { idToken } = oidc.getTokens();
|
|
200
|
-
|
|
201
|
-
const user = useMemo(
|
|
202
|
-
() =>
|
|
203
|
-
decodeJwt(idToken) as {
|
|
204
|
-
// Use https://jwt.io/ to tell what's in your idToken
|
|
205
|
-
sub: string;
|
|
206
|
-
preferred_username: string;
|
|
207
|
-
},
|
|
208
|
-
[idToken]
|
|
209
|
-
);
|
|
210
|
-
|
|
211
|
-
return { user };
|
|
212
|
-
}
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
## Refreshing token
|
|
216
|
-
|
|
217
|
-
The token refresh is handled automatically for you, however you can manually trigger
|
|
218
|
-
a token refresh with `oidc.getTokens()`.
|
|
219
|
-
|
|
220
|
-
## What happens if the OIDC server is down?
|
|
221
|
-
|
|
222
|
-
If the OIDC server is down or misconfigured an error get printed in the console, everything
|
|
223
|
-
continues as normal with the user unauthenticated. If the user tries to login an alert saying
|
|
224
|
-
that authentication is not available at the moment is displayed and nothing happens.
|
|
225
|
-
This enable your the part of your app that do not requires authentication to remain up even when
|
|
226
|
-
your identities server is facing issues.
|
|
227
|
-
|
|
228
|
-
## Demo setup
|
|
229
|
-
|
|
230
|
-
<p align="center">
|
|
231
|
-
<img width="764" alt="image" src="https://github.com/garronej/oidc-spa/assets/6702424/1c8922de-d724-4e9d-b630-e82562449612">
|
|
232
|
-
</p>
|
|
233
|
-
|
|
234
|
-
A very basic setup with Keycloak and Create React App.
|
|
235
|
-
|
|
236
|
-
- It's live here: https://starter.keycloakify.dev/
|
|
237
|
-
- The source code is [here](https://github.com/keycloakify/keycloakify-starter).
|
|
238
|
-
The setup is collocated with a custom Keycloak theme. The part where we use `oidc-spa` is [here](https://github.com/keycloakify/keycloakify-starter/blob/main/src/App/App.tsx).
|
|
52
|
+
Heads over to [the documentation website](https://docs.oidc-spa.dev) 📘!
|
|
239
53
|
|
|
240
54
|
## Showcases
|
|
241
55
|
|
|
56
|
+
`oidc-spa` is used at scale by important organization with thousand of users!
|
|
57
|
+
|
|
242
58
|
This library is powers the authentication of the following platforms:
|
|
243
59
|
|
|
244
60
|
### Onyxia
|
|
@@ -253,45 +69,8 @@ This library is powers the authentication of the following platforms:
|
|
|
253
69
|
### The French Interministerial Base of Free Software
|
|
254
70
|
|
|
255
71
|
- [Source code](https://github.com/codegouvfr/sill-web/)
|
|
256
|
-
- [Deployment of the website](https://
|
|
72
|
+
- [Deployment of the website](https://sill-preprod.lab.sspcloud.fr/)
|
|
257
73
|
|
|
258
74
|
<a href="https://youtu.be/AT3CvmY_Y7M?si=Edkf0vRNjosGLA3R">
|
|
259
75
|
<img width="1712" alt="image" src="https://github.com/garronej/i18nifty/assets/6702424/aa06cc30-b2bd-4c8b-b435-2f875f53175b">
|
|
260
76
|
</a>
|
|
261
|
-
|
|
262
|
-
## Contributing
|
|
263
|
-
|
|
264
|
-
### Testing your changes in an external app
|
|
265
|
-
|
|
266
|
-
You have made some changes to the code and you want to test them
|
|
267
|
-
in your app before submitting a pull request?
|
|
268
|
-
|
|
269
|
-
Assuming `you/my-app` have `oidc-spa` as a dependency.
|
|
270
|
-
|
|
271
|
-
```bash
|
|
272
|
-
cd ~/github
|
|
273
|
-
git clone https://github.com/you/my-app
|
|
274
|
-
cd my-app
|
|
275
|
-
yarn
|
|
276
|
-
|
|
277
|
-
cd ~/github
|
|
278
|
-
git clone https://github.com/garronej/oidc-spa
|
|
279
|
-
cd oidc-spa
|
|
280
|
-
yarn
|
|
281
|
-
yarn build
|
|
282
|
-
yarn link-in-app my-app
|
|
283
|
-
npx tsc -w
|
|
284
|
-
|
|
285
|
-
# Open another terminal
|
|
286
|
-
|
|
287
|
-
cd ~/github/my-app
|
|
288
|
-
rm -rf node_modules/.cache
|
|
289
|
-
yarn start # Or whatever my-app is using for starting the project
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
You don't have to use `~/github` as reference path. Just make sure `my-app` and `oidc-spa`
|
|
293
|
-
are in the same directory.
|
|
294
|
-
|
|
295
|
-
> Note for the maintainer: You might run into issues if you do not list all your singleton dependencies in
|
|
296
|
-
> `src/link-in-app.js -> singletonDependencies`. A singleton dependency is a dependency that can
|
|
297
|
-
> only be present once in an App. Singleton dependencies are usually listed as peerDependencies example `react`, `@emotion/*`.
|
package/oidc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oidc.js","sourceRoot":"","sources":["src/oidc.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"oidc.js","sourceRoot":"","sources":["src/oidc.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oidc-spa",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Openidconnect client for Single Page Applications",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -75,7 +75,8 @@
|
|
|
75
75
|
"prettier": "^2.8.8",
|
|
76
76
|
"react": "^18.2.0",
|
|
77
77
|
"ts-node": "^10.9.1",
|
|
78
|
-
"typescript": "^5.0.4"
|
|
78
|
+
"typescript": "^5.0.4",
|
|
79
|
+
"zod": "^3.22.4"
|
|
79
80
|
},
|
|
80
81
|
"publishConfig": {
|
|
81
82
|
"access": "public"
|
package/react.d.ts
CHANGED
|
@@ -8,14 +8,36 @@ export declare function createOidcProvider(params: Parameters<typeof createOidc>
|
|
|
8
8
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
9
9
|
prOidc: Promise<Oidc>;
|
|
10
10
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
11
|
+
export type ReactiveOidc<DecodedIdToken extends Record<string, unknown>> = ReactiveOidc.NotLoggedIn | ReactiveOidc.LoggedIn<DecodedIdToken>;
|
|
12
|
+
export declare namespace ReactiveOidc {
|
|
13
|
+
type Common = Oidc.Common;
|
|
14
|
+
type NotLoggedIn = Common & {
|
|
15
|
+
isUserLoggedIn: false;
|
|
16
|
+
login: Oidc.NotLoggedIn["login"];
|
|
17
|
+
oidcTokens: undefined;
|
|
18
|
+
logout: undefined;
|
|
19
|
+
};
|
|
20
|
+
type LoggedIn<DecodedIdToken extends Record<string, unknown>> = Common & {
|
|
21
|
+
isUserLoggedIn: true;
|
|
22
|
+
oidcTokens: ReturnType<Oidc.LoggedIn["getTokens"]> & {
|
|
23
|
+
decodedIdToken: DecodedIdToken;
|
|
24
|
+
};
|
|
25
|
+
logout: Oidc.LoggedIn["logout"];
|
|
26
|
+
renewTokens: Oidc.LoggedIn["renewTokens"];
|
|
27
|
+
login: undefined;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export declare function createUseOidc<DecodedOidcIdToken extends Record<string, unknown> = Record<string, unknown>>(params?: {
|
|
31
|
+
decodedIdTokenZodSchema?: {
|
|
32
|
+
parse: (data: unknown) => DecodedOidcIdToken;
|
|
33
|
+
};
|
|
34
|
+
}): {
|
|
35
|
+
useOidc: {
|
|
36
|
+
(params?: {
|
|
37
|
+
assertUserLoggedIn: false;
|
|
38
|
+
}): ReactiveOidc<DecodedOidcIdToken>;
|
|
39
|
+
(params: {
|
|
40
|
+
assertUserLoggedIn: true;
|
|
41
|
+
}): ReactiveOidc.LoggedIn<DecodedOidcIdToken>;
|
|
42
|
+
};
|
|
21
43
|
};
|
package/react.js
CHANGED
|
@@ -27,11 +27,13 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
27
27
|
return ar;
|
|
28
28
|
};
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.
|
|
30
|
+
exports.createUseOidc = exports.createOidcProvider = void 0;
|
|
31
31
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
32
32
|
var react_1 = require("react");
|
|
33
33
|
var oidc_1 = require("./oidc");
|
|
34
34
|
var assert_1 = require("tsafe/assert");
|
|
35
|
+
var decodeJwt_1 = require("./tools/decodeJwt");
|
|
36
|
+
var id_1 = require("tsafe/id");
|
|
35
37
|
var oidcContext = (0, react_1.createContext)(undefined);
|
|
36
38
|
/** @see: https://github.com/garronej/oidc-spa#option-2-usage-directly-within-react */
|
|
37
39
|
function createOidcProvider(params) {
|
|
@@ -45,31 +47,47 @@ function createOidcProvider(params) {
|
|
|
45
47
|
if (oidc === undefined) {
|
|
46
48
|
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: fallback === undefined ? null : fallback });
|
|
47
49
|
}
|
|
48
|
-
return (0, jsx_runtime_1.jsx)(oidcContext.Provider,
|
|
50
|
+
return (0, jsx_runtime_1.jsx)(oidcContext.Provider, { value: oidc, children: children });
|
|
49
51
|
}
|
|
50
52
|
return { OidcProvider: OidcProvider, prOidc: prOidc };
|
|
51
53
|
}
|
|
52
54
|
exports.createOidcProvider = createOidcProvider;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
55
|
+
function createUseOidc(params) {
|
|
56
|
+
var decodedIdTokenZodSchema = (params !== null && params !== void 0 ? params : {}).decodedIdTokenZodSchema;
|
|
57
|
+
function useOidc(params) {
|
|
58
|
+
var _a = (params !== null && params !== void 0 ? params : {}).assertUserLoggedIn, assertUserLoggedIn = _a === void 0 ? false : _a;
|
|
59
|
+
var oidc = (0, react_1.useContext)(oidcContext);
|
|
60
|
+
(0, assert_1.assert)(oidc !== undefined, "You must use useOidc inside a OidcProvider");
|
|
61
|
+
var _b = __read((0, react_1.useReducer)(function () { return []; }, []), 2), forceUpdate = _b[1];
|
|
62
|
+
(0, react_1.useEffect)(function () {
|
|
63
|
+
if (!oidc.isUserLoggedIn) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
var unsubscribe = oidc.subscribeToTokensChange(forceUpdate).unsubscribe;
|
|
67
|
+
return unsubscribe;
|
|
68
|
+
}, [oidc]);
|
|
69
|
+
if (assertUserLoggedIn && !oidc.isUserLoggedIn) {
|
|
70
|
+
throw new Error("The user must be logged in to use this hook (assertUserLoggedIn was set to true)");
|
|
68
71
|
}
|
|
69
|
-
var
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
72
|
+
var tokens = oidc.isUserLoggedIn ? oidc.getTokens() : undefined;
|
|
73
|
+
var decodedIdToken = (0, react_1.useMemo)(function () {
|
|
74
|
+
if ((tokens === null || tokens === void 0 ? void 0 : tokens.idToken) === undefined) {
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
var decodedIdToken = (0, decodeJwt_1.decodeJwt)(tokens.idToken);
|
|
78
|
+
if (decodedIdTokenZodSchema !== undefined) {
|
|
79
|
+
decodedIdTokenZodSchema.parse((0, decodeJwt_1.decodeJwt)(tokens.idToken));
|
|
80
|
+
}
|
|
81
|
+
return decodedIdToken;
|
|
82
|
+
}, [tokens === null || tokens === void 0 ? void 0 : tokens.idToken]);
|
|
83
|
+
var common = {
|
|
84
|
+
"params": oidc.params
|
|
85
|
+
};
|
|
86
|
+
return oidc.isUserLoggedIn
|
|
87
|
+
? (0, id_1.id)(__assign(__assign({}, common), { "isUserLoggedIn": true, "oidcTokens": __assign(__assign({}, tokens), { "decodedIdToken": decodedIdToken }), "logout": oidc.logout, "renewTokens": oidc.renewTokens, "login": undefined }))
|
|
88
|
+
: (0, id_1.id)(__assign(__assign({}, common), { "isUserLoggedIn": false, "login": oidc.login, "oidcTokens": undefined, "logout": undefined }));
|
|
89
|
+
}
|
|
90
|
+
return { useOidc: useOidc };
|
|
73
91
|
}
|
|
74
|
-
exports.
|
|
92
|
+
exports.createUseOidc = createUseOidc;
|
|
75
93
|
//# sourceMappingURL=react.js.map
|
package/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["src/react.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["src/react.tsx"],"names":[],"mappings":"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"}
|
package/src/react.tsx
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
useEffect,
|
|
3
|
+
useState,
|
|
4
|
+
createContext,
|
|
5
|
+
useContext,
|
|
6
|
+
useReducer,
|
|
7
|
+
useMemo,
|
|
8
|
+
type ReactNode
|
|
9
|
+
} from "react";
|
|
2
10
|
import { createOidc, type Oidc } from "./oidc";
|
|
3
11
|
import { assert } from "tsafe/assert";
|
|
12
|
+
import { decodeJwt } from "./tools/decodeJwt";
|
|
13
|
+
import { id } from "tsafe/id";
|
|
4
14
|
|
|
5
15
|
const oidcContext = createContext<Oidc | undefined>(undefined);
|
|
6
16
|
|
|
@@ -27,30 +37,103 @@ export function createOidcProvider(params: Parameters<typeof createOidc>[0]) {
|
|
|
27
37
|
return { OidcProvider, prOidc };
|
|
28
38
|
}
|
|
29
39
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
* Note that when the tokens changes the component will rerender automatically so
|
|
34
|
-
* you can safely use the returned values of getTokens() as state variables.
|
|
35
|
-
* In other terms you can use accessToken and idToken as dependencies of useEffect() or useMemo().
|
|
36
|
-
*
|
|
37
|
-
* */
|
|
38
|
-
export function useOidc() {
|
|
39
|
-
const oidc = useContext(oidcContext);
|
|
40
|
+
export type ReactiveOidc<DecodedIdToken extends Record<string, unknown>> =
|
|
41
|
+
| ReactiveOidc.NotLoggedIn
|
|
42
|
+
| ReactiveOidc.LoggedIn<DecodedIdToken>;
|
|
40
43
|
|
|
41
|
-
|
|
44
|
+
export namespace ReactiveOidc {
|
|
45
|
+
export type Common = Oidc.Common;
|
|
42
46
|
|
|
43
|
-
|
|
47
|
+
export type NotLoggedIn = Common & {
|
|
48
|
+
isUserLoggedIn: false;
|
|
49
|
+
login: Oidc.NotLoggedIn["login"];
|
|
50
|
+
oidcTokens: undefined;
|
|
51
|
+
logout: undefined;
|
|
52
|
+
};
|
|
44
53
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
54
|
+
export type LoggedIn<DecodedIdToken extends Record<string, unknown>> = Common & {
|
|
55
|
+
isUserLoggedIn: true;
|
|
56
|
+
oidcTokens: ReturnType<Oidc.LoggedIn["getTokens"]> & {
|
|
57
|
+
decodedIdToken: DecodedIdToken;
|
|
58
|
+
};
|
|
59
|
+
logout: Oidc.LoggedIn["logout"];
|
|
60
|
+
renewTokens: Oidc.LoggedIn["renewTokens"];
|
|
61
|
+
login: undefined;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export function createUseOidc<
|
|
66
|
+
DecodedOidcIdToken extends Record<string, unknown> = Record<string, unknown>
|
|
67
|
+
>(params?: { decodedIdTokenZodSchema?: { parse: (data: unknown) => DecodedOidcIdToken } }) {
|
|
68
|
+
const { decodedIdTokenZodSchema } = params ?? {};
|
|
69
|
+
|
|
70
|
+
function useOidc(params?: { assertUserLoggedIn: false }): ReactiveOidc<DecodedOidcIdToken>;
|
|
71
|
+
function useOidc(params: { assertUserLoggedIn: true }): ReactiveOidc.LoggedIn<DecodedOidcIdToken>;
|
|
72
|
+
function useOidc(params?: { assertUserLoggedIn: boolean }): ReactiveOidc<DecodedOidcIdToken> {
|
|
73
|
+
const { assertUserLoggedIn = false } = params ?? {};
|
|
74
|
+
|
|
75
|
+
const oidc = useContext(oidcContext);
|
|
76
|
+
|
|
77
|
+
assert(oidc !== undefined, "You must use useOidc inside a OidcProvider");
|
|
78
|
+
|
|
79
|
+
const [, forceUpdate] = useReducer(() => [], []);
|
|
80
|
+
|
|
81
|
+
useEffect(() => {
|
|
82
|
+
if (!oidc.isUserLoggedIn) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const { unsubscribe } = oidc.subscribeToTokensChange(forceUpdate);
|
|
87
|
+
|
|
88
|
+
return unsubscribe;
|
|
89
|
+
}, [oidc]);
|
|
90
|
+
|
|
91
|
+
if (assertUserLoggedIn && !oidc.isUserLoggedIn) {
|
|
92
|
+
throw new Error(
|
|
93
|
+
"The user must be logged in to use this hook (assertUserLoggedIn was set to true)"
|
|
94
|
+
);
|
|
48
95
|
}
|
|
49
96
|
|
|
50
|
-
const
|
|
97
|
+
const tokens = oidc.isUserLoggedIn ? oidc.getTokens() : undefined;
|
|
98
|
+
|
|
99
|
+
const decodedIdToken = useMemo(() => {
|
|
100
|
+
if (tokens?.idToken === undefined) {
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const decodedIdToken = decodeJwt(tokens.idToken) as DecodedOidcIdToken;
|
|
51
105
|
|
|
52
|
-
|
|
53
|
-
|
|
106
|
+
if (decodedIdTokenZodSchema !== undefined) {
|
|
107
|
+
decodedIdTokenZodSchema.parse(decodeJwt(tokens.idToken));
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return decodedIdToken;
|
|
111
|
+
}, [tokens?.idToken]);
|
|
112
|
+
|
|
113
|
+
const common: ReactiveOidc.Common = {
|
|
114
|
+
"params": oidc.params
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
return oidc.isUserLoggedIn
|
|
118
|
+
? id<ReactiveOidc.LoggedIn<DecodedOidcIdToken>>({
|
|
119
|
+
...common,
|
|
120
|
+
"isUserLoggedIn": true,
|
|
121
|
+
"oidcTokens": {
|
|
122
|
+
...tokens!,
|
|
123
|
+
"decodedIdToken": decodedIdToken!
|
|
124
|
+
},
|
|
125
|
+
"logout": oidc.logout,
|
|
126
|
+
"renewTokens": oidc.renewTokens,
|
|
127
|
+
"login": undefined
|
|
128
|
+
})
|
|
129
|
+
: id<ReactiveOidc.NotLoggedIn>({
|
|
130
|
+
...common,
|
|
131
|
+
"isUserLoggedIn": false,
|
|
132
|
+
"login": oidc.login,
|
|
133
|
+
"oidcTokens": undefined,
|
|
134
|
+
"logout": undefined
|
|
135
|
+
});
|
|
136
|
+
}
|
|
54
137
|
|
|
55
|
-
return {
|
|
138
|
+
return { useOidc };
|
|
56
139
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fnv1aHashToHex.js","sourceRoot":"","sources":["../src/tools/fnv1aHashToHex.ts"],"names":[],"mappings":";;;AAAA,SAAgB,cAAc,CAAC,GAAW;IACtC,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"fnv1aHashToHex.js","sourceRoot":"","sources":["../src/tools/fnv1aHashToHex.ts"],"names":[],"mappings":";;;AAAA,SAAgB,cAAc,CAAC,GAAW;IACtC,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,6DAA6D;AACnG,CAAC;AAPD,wCAOC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readExpirationTimeInJwt.js","sourceRoot":"","sources":["../src/tools/readExpirationTimeInJwt.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAmC;AACnC,uCAAsC;AAEtC,sFAAsF;AACtF,SAAgB,uBAAuB,CAAC,KAAa;IACjD,IAAI,cAAsB,CAAC;IAE3B,IAAI;
|
|
1
|
+
{"version":3,"file":"readExpirationTimeInJwt.js","sourceRoot":"","sources":["../src/tools/readExpirationTimeInJwt.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAmC;AACnC,uCAAsC;AAEtC,sFAAsF;AACtF,SAAgB,uBAAuB,CAAC,KAAa;IACjD,IAAI,cAAsB,CAAC;IAE3B,IAAI,CAAC;QACD,cAAc,GAAG,IAAA,oBAAS,EAAkB,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;QAE9D,IAAA,eAAM,EAAC,OAAO,cAAc,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;IACzE,CAAC;IAAC,WAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,cAAc,CAAC;AAC1B,CAAC;AAZD,0DAYC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlQueryParams.js","sourceRoot":"","sources":["../src/tools/urlQueryParams.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,SAAgB,kBAAkB,CAAC,MAAoD;IAG3E,IAAA,GAAG,GAAkB,MAAM,IAAxB,EAAE,IAAI,GAAY,MAAM,KAAlB,EAAE,KAAK,GAAK,MAAM,MAAX,CAAY;IAEpC,IAAI,MAAM,GAAG,GAAG,CAAC;IAEjB,IAAM,MAAM,GAAG,yBAAyB,CAAC;QACrC,GAAG,KAAA;QACH,IAAI,MAAA;KACP,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,UAAU,EAAE;
|
|
1
|
+
{"version":3,"file":"urlQueryParams.js","sourceRoot":"","sources":["../src/tools/urlQueryParams.ts"],"names":[],"mappings":"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"}
|