oidc-spa 6.12.5 → 6.13.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 +5 -6
- package/core/createOidc.js +1 -1
- package/mock/react.d.ts +6 -1
- package/package.json +1 -1
- package/react/react.d.ts +7 -2
- package/react/react.js +16 -10
- package/react/react.js.map +1 -1
- package/src/react/react.tsx +18 -3
package/README.md
CHANGED
|
@@ -38,11 +38,10 @@ There are also plenty of self-hosted options like Keycloak, Ory Hydra, and Dex.
|
|
|
38
38
|
What all of these have in common is that they implement the OpenID Connect/OAuth2 standard.
|
|
39
39
|
|
|
40
40
|
This library provides a **unified way** to connect with these different providers instead of having to use
|
|
41
|
-
their specific SDKs.
|
|
42
|
-
When a user clicks the **"Login"** button in your app, just call the `login()` method—it's that simple.
|
|
41
|
+
their specific SDKs.
|
|
43
42
|
|
|
44
|
-
`oidc-spa` implement the [**Authorization Code Flow with PKCE**](https://docs.oidc-spa.dev/resources/why-no-client-secret), this means that **you do not need a backend** to handle the authentication process.
|
|
45
|
-
The authentication process is handled entirely in the browser.
|
|
43
|
+
`oidc-spa` implement the [**Authorization Code Flow with PKCE**](https://docs.oidc-spa.dev/resources/why-no-client-secret), this means that **you do not need a backend and a database** to handle the authentication process.
|
|
44
|
+
The authentication process is handled entirely in the browser. And no need for `/login` or `/logout` routes.
|
|
46
45
|
|
|
47
46
|
## Why `oidc-spa`?
|
|
48
47
|
|
|
@@ -67,10 +66,10 @@ We wanted a **universal solution**—one that is as good or better than all exis
|
|
|
67
66
|
|
|
68
67
|
- 🎓 **No OIDC/OAuth2 expertise required**: Easy to setup and use. We're here to help [on Discord](https://discord.gg/mJdYJSdcm4)!
|
|
69
68
|
- 🛠️ **Simple setup**: No need to define `/login` or `/logout` routes—token refreshing is automatic, it just works.
|
|
70
|
-
- ✨ **React integration**: Expose a framework agnostic API
|
|
69
|
+
- ✨ **React integration**: Expose a framework agnostic API but also a React adapter `oidc-spa/react`.
|
|
71
70
|
- 🔥 **No limitation**- For example, everything you could do with `keycloak-js`, you can do with `oidc-spa`.
|
|
72
71
|
- 💬 **Detailed debug messages**: If your OIDC server is not properly configured, it tells you precisely what’s wrong and what you need to do to fix it.
|
|
73
|
-
- 🕣 **Auto logout with countdown**: "You will be logged out in 10... 9... 8..."
|
|
72
|
+
- 🕣 **Auto logout with countdown**: "You will be logged out in 10... 9... 8...", users see exactly when their session expires.
|
|
74
73
|
- 🚪 **Logout propagation**: Logging out in one tab logs out all others.
|
|
75
74
|
- 📖 **Comprehensive documentation**: Guides and examples for common scenarios.
|
|
76
75
|
- ✅ **Type safety**: Strong TypeScript support with optional [Zod](https://zod.dev/) integration validating the expected shape of the ID token.
|
package/core/createOidc.js
CHANGED
|
@@ -125,7 +125,7 @@ var isNewBrowserSession_1 = require("./isNewBrowserSession");
|
|
|
125
125
|
var trustedFetch_1 = require("./trustedFetch");
|
|
126
126
|
(0, handleOidcCallback_1.handleOidcCallback)();
|
|
127
127
|
// NOTE: Replaced at build time
|
|
128
|
-
var VERSION = "6.
|
|
128
|
+
var VERSION = "6.13.0";
|
|
129
129
|
var globalContext = {
|
|
130
130
|
prOidcByConfigId: new Map(),
|
|
131
131
|
hasLogoutBeenCalled: (0, tsafe_1.id)(false),
|
package/mock/react.d.ts
CHANGED
|
@@ -46,5 +46,10 @@ export declare function createMockReactOidc<DecodedIdToken extends Record<string
|
|
|
46
46
|
withLoginEnforced: <Props extends Record<string, unknown>>(Component: import("react").ComponentType<Props>, params?: {
|
|
47
47
|
onRedirecting: () => import("react").JSX.Element | null;
|
|
48
48
|
}) => import("react").FC<Props>;
|
|
49
|
-
enforceLogin: (
|
|
49
|
+
enforceLogin: (loaderParams: {
|
|
50
|
+
request?: {
|
|
51
|
+
url?: string;
|
|
52
|
+
};
|
|
53
|
+
cause?: "preload" | string;
|
|
54
|
+
}) => Promise<void | never>;
|
|
50
55
|
} : never : never);
|
package/package.json
CHANGED
package/react/react.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ReactNode, type ComponentType, type FC, JSX } from "react";
|
|
1
|
+
import { type ReactNode, type ComponentType, type FC, type JSX } from "react";
|
|
2
2
|
import { type Oidc, type ParamsOfCreateOidc, OidcInitializationError } from "../core";
|
|
3
3
|
import type { ValueOrAsyncGetter } from "../tools/ValueOrAsyncGetter";
|
|
4
4
|
export type OidcReact<DecodedIdToken extends Record<string, unknown>> = OidcReact.NotLoggedIn | OidcReact.LoggedIn<DecodedIdToken>;
|
|
@@ -81,7 +81,12 @@ type OidcReactApi<DecodedIdToken extends Record<string, unknown>, AutoLogin exte
|
|
|
81
81
|
withLoginEnforced: <Props extends Record<string, unknown>>(Component: ComponentType<Props>, params?: {
|
|
82
82
|
onRedirecting: () => JSX.Element | null;
|
|
83
83
|
}) => FC<Props>;
|
|
84
|
-
enforceLogin: (
|
|
84
|
+
enforceLogin: (loaderParams: {
|
|
85
|
+
request?: {
|
|
86
|
+
url?: string;
|
|
87
|
+
};
|
|
88
|
+
cause?: "preload" | string;
|
|
89
|
+
}) => Promise<void | never>;
|
|
85
90
|
});
|
|
86
91
|
export declare function createOidcReactApi_dependencyInjection<DecodedIdToken extends Record<string, unknown>, ParamsOfCreateOidc extends {
|
|
87
92
|
autoLogin?: boolean;
|
package/react/react.js
CHANGED
|
@@ -262,23 +262,29 @@ function createOidcReactApi_dependencyInjection(paramsOrGetParams, createOidc) {
|
|
|
262
262
|
ComponentWithLoginEnforced.displayName = "".concat((_b = (_a = Component.displayName) !== null && _a !== void 0 ? _a : Component.name) !== null && _b !== void 0 ? _b : "Component", "WithLoginEnforced");
|
|
263
263
|
return ComponentWithLoginEnforced;
|
|
264
264
|
}
|
|
265
|
-
function enforceLogin() {
|
|
266
|
-
return __awaiter(this,
|
|
267
|
-
var oidc;
|
|
268
|
-
|
|
269
|
-
return __generator(this, function (
|
|
270
|
-
switch (
|
|
271
|
-
case 0:
|
|
265
|
+
function enforceLogin(loaderParams) {
|
|
266
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
267
|
+
var cause, redirectUrl, oidc;
|
|
268
|
+
var _a, _b;
|
|
269
|
+
return __generator(this, function (_c) {
|
|
270
|
+
switch (_c.label) {
|
|
271
|
+
case 0:
|
|
272
|
+
cause = loaderParams.cause;
|
|
273
|
+
redirectUrl = (_b = (_a = loaderParams.request) === null || _a === void 0 ? void 0 : _a.url) !== null && _b !== void 0 ? _b : location.href;
|
|
274
|
+
return [4 /*yield*/, getOidc()];
|
|
272
275
|
case 1:
|
|
273
|
-
oidc =
|
|
276
|
+
oidc = _c.sent();
|
|
274
277
|
if (!!oidc.isUserLoggedIn) return [3 /*break*/, 3];
|
|
278
|
+
if (cause === "preload") {
|
|
279
|
+
throw new Error("oidc-spa: User is not yet logged in. This is an expected error, nothing to be addressed.");
|
|
280
|
+
}
|
|
275
281
|
return [4 /*yield*/, oidc.login({
|
|
276
282
|
redirectUrl: redirectUrl,
|
|
277
283
|
doesCurrentHrefRequiresAuth: location.href === redirectUrl
|
|
278
284
|
})];
|
|
279
285
|
case 2:
|
|
280
|
-
|
|
281
|
-
|
|
286
|
+
_c.sent();
|
|
287
|
+
_c.label = 3;
|
|
282
288
|
case 3: return [2 /*return*/];
|
|
283
289
|
}
|
|
284
290
|
});
|
package/react/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react/react.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react/react.tsx"],"names":[],"mappings":"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"}
|
package/src/react/react.tsx
CHANGED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
type ReactNode,
|
|
9
9
|
type ComponentType,
|
|
10
10
|
type FC,
|
|
11
|
-
JSX
|
|
11
|
+
type JSX
|
|
12
12
|
} from "react";
|
|
13
13
|
import { type Oidc, createOidc, type ParamsOfCreateOidc, OidcInitializationError } from "../core";
|
|
14
14
|
import { assert, type Equals, type Param0 } from "../vendor/frontend/tsafe";
|
|
@@ -112,7 +112,10 @@ type OidcReactApi<DecodedIdToken extends Record<string, unknown>, AutoLogin exte
|
|
|
112
112
|
onRedirecting: () => JSX.Element | null;
|
|
113
113
|
}
|
|
114
114
|
) => FC<Props>;
|
|
115
|
-
enforceLogin: (
|
|
115
|
+
enforceLogin: (loaderParams: {
|
|
116
|
+
request?: { url?: string };
|
|
117
|
+
cause?: "preload" | string;
|
|
118
|
+
}) => Promise<void | never>;
|
|
116
119
|
});
|
|
117
120
|
|
|
118
121
|
export function createOidcReactApi_dependencyInjection<
|
|
@@ -386,10 +389,22 @@ export function createOidcReactApi_dependencyInjection<
|
|
|
386
389
|
return ComponentWithLoginEnforced;
|
|
387
390
|
}
|
|
388
391
|
|
|
389
|
-
async function enforceLogin(
|
|
392
|
+
async function enforceLogin(loaderParams: {
|
|
393
|
+
request?: { url?: string };
|
|
394
|
+
cause?: "preload" | string;
|
|
395
|
+
}): Promise<void | never> {
|
|
396
|
+
const { cause } = loaderParams;
|
|
397
|
+
const redirectUrl = loaderParams.request?.url ?? location.href;
|
|
398
|
+
|
|
390
399
|
const oidc = await getOidc();
|
|
391
400
|
|
|
392
401
|
if (!oidc.isUserLoggedIn) {
|
|
402
|
+
if (cause === "preload") {
|
|
403
|
+
throw new Error(
|
|
404
|
+
"oidc-spa: User is not yet logged in. This is an expected error, nothing to be addressed."
|
|
405
|
+
);
|
|
406
|
+
}
|
|
407
|
+
|
|
393
408
|
await oidc.login({
|
|
394
409
|
redirectUrl,
|
|
395
410
|
doesCurrentHrefRequiresAuth: location.href === redirectUrl
|