@schemavaults/auth-react-provider 0.10.22 → 0.10.25
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/dist/hooks/use-auth-client-state-watcher.js +35 -35
- package/dist/hooks/use-auth-client-state-watcher.js.map +1 -1
- package/dist/hooks/use-auto-reacquire-default-access-tokens.js +53 -44
- package/dist/hooks/use-auto-reacquire-default-access-tokens.js.map +1 -1
- package/dist/hooks/use-effect-if-authenticated.js +4 -6
- package/dist/hooks/use-effect-if-authenticated.js.map +1 -1
- package/dist/hooks/use-start-login-oauth-pkce-flow.js +12 -9
- package/dist/hooks/use-start-login-oauth-pkce-flow.js.map +1 -1
- package/package.json +10 -10
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useEffect } from "react";
|
|
2
|
+
import { useEffect, useEffectEvent } from "react";
|
|
3
3
|
import { useAuth } from "./use-auth";
|
|
4
4
|
import { useAppEnvironment, } from "./use-app-environment";
|
|
5
5
|
import { useDebugWithSpecifiedBooleanOrLookupDefault } from "./use-debug";
|
|
@@ -7,6 +7,39 @@ export function useAuthClientStateWatcher({ onAuthStateChanged, ...opts }) {
|
|
|
7
7
|
const auth = useAuth();
|
|
8
8
|
const environment = useAppEnvironment();
|
|
9
9
|
const debug = useDebugWithSpecifiedBooleanOrLookupDefault(environment, opts.debug);
|
|
10
|
+
const handleAuthSDKStateChangeEvent = useEffectEvent(async function handleAuthSDKStateChangeEvent() {
|
|
11
|
+
if (debug) {
|
|
12
|
+
console.log("[useAuthClientStateWatcher] Auth SDK state changed.");
|
|
13
|
+
}
|
|
14
|
+
try {
|
|
15
|
+
if (!auth.ready) {
|
|
16
|
+
throw new Error("Cannot handle auth SDK state change event when auth client is not initialized");
|
|
17
|
+
}
|
|
18
|
+
const authClient = auth.client.current;
|
|
19
|
+
if (!authClient) {
|
|
20
|
+
if (debug) {
|
|
21
|
+
console.warn("[useAuthClientStateWatcher] Auth client is null.");
|
|
22
|
+
}
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
if (debug) {
|
|
27
|
+
console.log("[useAuthClientStateWatcher] Calling onAuthStateChanged() with auth client: ", authClient);
|
|
28
|
+
}
|
|
29
|
+
await onAuthStateChanged({
|
|
30
|
+
auth: authClient,
|
|
31
|
+
debug,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
console.error("There was an error running the onAuthStateChanged callback passed to useAuthClientStateWatcher: ", e);
|
|
36
|
+
throw new Error("There was an error running the onAuthStateChanged callback passed to useAuthClientStateWatcher!");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
console.error("[useAuthClientStateWatcher] Error handling auth SDK state change event: ", e);
|
|
41
|
+
}
|
|
42
|
+
}); // end of handleAuthSDKStateChangeEvent)
|
|
10
43
|
// Attach an auth-state change listener to the auth client
|
|
11
44
|
useEffect(() => {
|
|
12
45
|
if (!auth.ready) {
|
|
@@ -15,39 +48,6 @@ export function useAuthClientStateWatcher({ onAuthStateChanged, ...opts }) {
|
|
|
15
48
|
}
|
|
16
49
|
return;
|
|
17
50
|
}
|
|
18
|
-
async function handleAuthSDKStateChangeEvent() {
|
|
19
|
-
if (debug) {
|
|
20
|
-
console.log("[useAuthClientStateWatcher] Auth SDK state changed.");
|
|
21
|
-
}
|
|
22
|
-
try {
|
|
23
|
-
if (!auth.ready) {
|
|
24
|
-
throw new Error("Cannot handle auth SDK state change event when auth client is not initialized");
|
|
25
|
-
}
|
|
26
|
-
const authClient = auth.client.current;
|
|
27
|
-
if (!authClient) {
|
|
28
|
-
if (debug) {
|
|
29
|
-
console.warn("[useAuthClientStateWatcher] Auth client is null.");
|
|
30
|
-
}
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
try {
|
|
34
|
-
if (debug) {
|
|
35
|
-
console.log("[useAuthClientStateWatcher] Calling onAuthStateChanged() with auth client: ", authClient);
|
|
36
|
-
}
|
|
37
|
-
await onAuthStateChanged({
|
|
38
|
-
auth: authClient,
|
|
39
|
-
debug,
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
catch (e) {
|
|
43
|
-
console.error("There was an error running the onAuthStateChanged callback passed to useAuthClientStateWatcher: ", e);
|
|
44
|
-
throw new Error("There was an error running the onAuthStateChanged callback passed to useAuthClientStateWatcher!");
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
catch (e) {
|
|
48
|
-
console.error("[useAuthClientStateWatcher] Error handling auth SDK state change event: ", e);
|
|
49
|
-
}
|
|
50
|
-
} // end of handleAuthSDKStateChangeEvent
|
|
51
51
|
const authClientRef = auth.client;
|
|
52
52
|
if (authClientRef.current) {
|
|
53
53
|
if (debug) {
|
|
@@ -79,6 +79,6 @@ export function useAuthClientStateWatcher({ onAuthStateChanged, ...opts }) {
|
|
|
79
79
|
};
|
|
80
80
|
return unsubscribe;
|
|
81
81
|
}
|
|
82
|
-
}, [auth, debug
|
|
82
|
+
}, [auth, debug]);
|
|
83
83
|
}
|
|
84
84
|
//# sourceMappingURL=use-auth-client-state-watcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-auth-client-state-watcher.js","sourceRoot":"","sources":["../../src/hooks/use-auth-client-state-watcher.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAkB,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"use-auth-client-state-watcher.js","sourceRoot":"","sources":["../../src/hooks/use-auth-client-state-watcher.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { accessTokenExpiry } from "@schemavaults/auth-common";
|
|
3
|
-
import { useEffect } from "react";
|
|
3
|
+
import { useEffect, useEffectEvent } from "react";
|
|
4
4
|
import useAuth from "./use-auth";
|
|
5
5
|
import useDefaultAccessTokenAudiences from "./use-default-access-token-audiences";
|
|
6
6
|
import useDebug from "./use-debug";
|
|
@@ -17,61 +17,70 @@ export function useAutoReacquireDefaultAccessTokens() {
|
|
|
17
17
|
const defaultAccessTokenAudiences = useDefaultAccessTokenAudiences();
|
|
18
18
|
const environment = useAppEnvironment();
|
|
19
19
|
const debug = useDebug(environment);
|
|
20
|
-
|
|
21
|
-
if (
|
|
22
|
-
|
|
20
|
+
const reacquireAccessTokenIfNearExpiry = useEffectEvent(async (auth, audience) => {
|
|
21
|
+
if (debug) {
|
|
22
|
+
console.log(`[useAutoReacquireDefaultAccessTokens] reacquireAccessTokenIfNearExpiry(audience="${audience}")`);
|
|
23
|
+
}
|
|
24
|
+
const existingAccessToken = auth.getAccessTokenFromCache(audience);
|
|
25
|
+
if (!existingAccessToken) {
|
|
23
26
|
if (debug) {
|
|
24
|
-
console.warn(
|
|
27
|
+
console.warn(`[useAutoReacquireDefaultAccessTokens] No existing access token for audience "${audience}" found!`);
|
|
28
|
+
}
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const timeUntilExpiry = existingAccessToken.exp - Date.now();
|
|
32
|
+
if (timeUntilExpiry <= 0) {
|
|
33
|
+
// expired
|
|
34
|
+
if (debug) {
|
|
35
|
+
console.warn(`[useAutoReacquireDefaultAccessTokens] Existing access token for audience "${audience}" expired!`);
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
if (timeUntilExpiry < REACQUIRE_THRESHOLD) {
|
|
40
|
+
if (debug) {
|
|
41
|
+
console.log(`[useAutoReacquireDefaultAccessTokens] Attempting to acquire fresh access token for audience "${audience}"! Existing one is near expiration...`);
|
|
25
42
|
}
|
|
43
|
+
return await auth.acquireAccessToken({
|
|
44
|
+
audience,
|
|
45
|
+
ensure_fresh: true,
|
|
46
|
+
dont_cache: false,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
const onTimer = useEffectEvent(async () => {
|
|
54
|
+
if (!authContext.ready) {
|
|
26
55
|
return;
|
|
27
56
|
}
|
|
28
|
-
if (!authContext.
|
|
57
|
+
else if (!authContext.client.current) {
|
|
29
58
|
return;
|
|
30
59
|
}
|
|
31
60
|
const auth = authContext.client.current;
|
|
32
|
-
|
|
61
|
+
if (!auth.isAuthenticated) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (typeof defaultAccessTokenAudiences === "undefined") {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
await Promise.all(defaultAccessTokenAudiences.map((audience) => reacquireAccessTokenIfNearExpiry(auth, audience)));
|
|
68
|
+
return;
|
|
69
|
+
});
|
|
70
|
+
useEffect(() => {
|
|
71
|
+
if (typeof defaultAccessTokenAudiences === "undefined" ||
|
|
72
|
+
!Array.isArray(defaultAccessTokenAudiences)) {
|
|
33
73
|
if (debug) {
|
|
34
|
-
console.
|
|
35
|
-
}
|
|
36
|
-
const existingAccessToken = auth.getAccessTokenFromCache(audience);
|
|
37
|
-
if (!existingAccessToken) {
|
|
38
|
-
if (debug) {
|
|
39
|
-
console.warn(`[useAutoReacquireDefaultAccessTokens] No existing access token for audience "${audience}" found!`);
|
|
40
|
-
}
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
const timeUntilExpiry = existingAccessToken.exp - Date.now();
|
|
44
|
-
if (timeUntilExpiry <= 0) {
|
|
45
|
-
// expired
|
|
46
|
-
if (debug) {
|
|
47
|
-
console.warn(`[useAutoReacquireDefaultAccessTokens] Existing access token for audience "${audience}" expired!`);
|
|
48
|
-
}
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
if (timeUntilExpiry < REACQUIRE_THRESHOLD) {
|
|
52
|
-
if (debug) {
|
|
53
|
-
console.log(`[useAutoReacquireDefaultAccessTokens] Attempting to acquire fresh access token for audience "${audience}"! Existing one is near expiration...`);
|
|
54
|
-
}
|
|
55
|
-
return await auth.acquireAccessToken({
|
|
56
|
-
audience,
|
|
57
|
-
ensure_fresh: true,
|
|
58
|
-
dont_cache: false,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
return null;
|
|
74
|
+
console.warn("[useAutoReacquireDefaultAccessTokens] Default access token audiences not set.");
|
|
63
75
|
}
|
|
76
|
+
return;
|
|
64
77
|
}
|
|
65
|
-
|
|
66
|
-
if (
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
if (typeof defaultAccessTokenAudiences === "undefined") {
|
|
70
|
-
return;
|
|
78
|
+
if (!authContext.ready || !authContext.client.current) {
|
|
79
|
+
if (debug) {
|
|
80
|
+
console.warn("[useAutoReacquireDefaultAccessTokens] Not attempting to auto-reacquire access tokens near expiry-- auth client is not ready or is falsy");
|
|
71
81
|
}
|
|
72
|
-
await Promise.all(defaultAccessTokenAudiences.map((audience) => reacquireAccessTokenIfNearExpiry(audience)));
|
|
73
82
|
return;
|
|
74
|
-
}
|
|
83
|
+
}
|
|
75
84
|
if (debug) {
|
|
76
85
|
console.log("[useAutoReacquireDefaultAccessTokens] Starting timer with interval (ms): ", REACQUIRE_INTERVAL);
|
|
77
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-auto-reacquire-default-access-tokens.js","sourceRoot":"","sources":["../../src/hooks/use-auto-reacquire-default-access-tokens.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAoB,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"use-auto-reacquire-default-access-tokens.js","sourceRoot":"","sources":["../../src/hooks/use-auto-reacquire-default-access-tokens.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAoB,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,OAAO,8BAA8B,MAAM,sCAAsC,CAAC;AAKlF,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,iBAAiB,MAAM,6BAA6B,CAAC;AAE5D,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO,OAAO,GAAG,IAAI,CAAC;AACxB,CAAC;AAED,MAAM,2BAA2B,GAAW,WAAW,CAAC,iBAAiB,CAAC,CAAC;AAC3E,MAAM,kBAAkB,GAAW,2BAA2B,GAAG,EAAE,CAAC;AACpE,+CAA+C;AAC/C,MAAM,mBAAmB,GAAW,2BAA2B,GAAG,GAAG,CAAC;AAEtE,MAAM,UAAU,mCAAmC;IACjD,MAAM,WAAW,GAAG,OAAO,EAAE,CAAC;IAC9B,MAAM,2BAA2B,GAAG,8BAA8B,EAAE,CAAC;IACrE,MAAM,WAAW,GAA+B,iBAAiB,EAAE,CAAC;IACpE,MAAM,KAAK,GAAY,QAAQ,CAAC,WAAW,CAAC,CAAC;IAE7C,MAAM,gCAAgC,GAAG,cAAc,CACrD,KAAK,EACH,IAA6B,EAC7B,QAAqB,EACQ,EAAE;QAC/B,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CACT,oFAAoF,QAAQ,IAAI,CACjG,CAAC;QACJ,CAAC;QAED,MAAM,mBAAmB,GACvB,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CACV,gFAAgF,QAAQ,UAAU,CACnG,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,eAAe,GAAW,mBAAmB,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrE,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;YACzB,UAAU;YACV,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CACV,6EAA6E,QAAQ,YAAY,CAClG,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,eAAe,GAAG,mBAAmB,EAAE,CAAC;YAC1C,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CACT,gGAAgG,QAAQ,uCAAuC,CAChJ,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC;gBACnC,QAAQ;gBACR,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,OAAO,GAAwB,cAAc,CACjD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;aAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAA4B,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;QACjE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,IAAI,OAAO,2BAA2B,KAAK,WAAW,EAAE,CAAC;YACvD,OAAO;QACT,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CACf,2BAA2B,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC3C,gCAAgC,CAAC,IAAI,EAAE,QAAQ,CAAC,CACjD,CACF,CAAC;QACF,OAAO;IACT,CAAC,CACF,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IACE,OAAO,2BAA2B,KAAK,WAAW;YAClD,CAAC,KAAK,CAAC,OAAO,CAAC,2BAA2B,CAAC,EAC3C,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CACV,+EAA+E,CAChF,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACtD,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CACV,yIAAyI,CAC1I,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CACT,2EAA2E,EAC3E,kBAAkB,CACnB,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAEjE,OAAO,SAAS,WAAW;YACzB,aAAa,CAAC,eAAe,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,2BAA2B,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,eAAe,mCAAmC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useEffect } from "react";
|
|
2
|
+
import { useEffect, useEffectEvent } from "react";
|
|
3
3
|
import useAuth from "./use-auth";
|
|
4
4
|
import useDebug from "./use-debug";
|
|
5
5
|
import useAppEnvironment from "./use-app-environment";
|
|
@@ -7,6 +7,7 @@ export function useEffectIfAuthenticated(effect) {
|
|
|
7
7
|
const authContext = useAuth();
|
|
8
8
|
const environment = useAppEnvironment();
|
|
9
9
|
const debug = useDebug(environment);
|
|
10
|
+
const runEffect = useEffectEvent(effect);
|
|
10
11
|
useEffect(() => {
|
|
11
12
|
if (!authContext.ready || !authContext.client.current) {
|
|
12
13
|
return;
|
|
@@ -20,16 +21,13 @@ export function useEffectIfAuthenticated(effect) {
|
|
|
20
21
|
if (debug) {
|
|
21
22
|
console.log(`[useEffectIfAuthenticated] Running 'effect' fn...`);
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
-
throw new TypeError("Expected 'effect' to be a function!");
|
|
25
|
-
}
|
|
26
|
-
const unsubscribe = effect(auth);
|
|
24
|
+
const unsubscribe = runEffect(auth);
|
|
27
25
|
if (typeof unsubscribe !== "function") {
|
|
28
26
|
throw new TypeError("Expected 'unsubscribe' to be a function!");
|
|
29
27
|
}
|
|
30
28
|
return unsubscribe;
|
|
31
29
|
}
|
|
32
|
-
}, [authContext,
|
|
30
|
+
}, [authContext, debug]);
|
|
33
31
|
}
|
|
34
32
|
export default useEffectIfAuthenticated;
|
|
35
33
|
//# sourceMappingURL=use-effect-if-authenticated.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-effect-if-authenticated.js","sourceRoot":"","sources":["../../src/hooks/use-effect-if-authenticated.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"use-effect-if-authenticated.js","sourceRoot":"","sources":["../../src/hooks/use-effect-if-authenticated.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,iBAEN,MAAM,uBAAuB,CAAC;AAI/B,MAAM,UAAU,wBAAwB,CACtC,MAAwD;IAExD,MAAM,WAAW,GAAG,OAAO,EAAE,CAAC;IAC9B,MAAM,WAAW,GAA+B,iBAAiB,EAAE,CAAC;IACpE,MAAM,KAAK,GAAY,QAAQ,CAAC,WAAW,CAAC,CAAC;IAE7C,MAAM,SAAS,GACb,cAAc,CAAC,MAAM,CAAC,CAAC;IAEzB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACtD,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAA4B,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;QACjE,MAAM,eAAe,GAAY,IAAI,CAAC,eAAe,CAAC;QACtD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CACT,gDAAgD,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CACrF,CAAC;QACJ,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACnE,CAAC;YACD,MAAM,WAAW,GAAkB,SAAS,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;gBACtC,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,WAAW,CAAC;QACrB,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,eAAe,wBAAwB,CAAC"}
|
|
@@ -20,14 +20,11 @@ export function useStartLoginOauthPKCEFlow({ onError, }) {
|
|
|
20
20
|
throw new Error("useStartLoginOauthPKCEFlow should not be run from @schemavaults/auth-server!");
|
|
21
21
|
}
|
|
22
22
|
let cancelLoginEffect = false;
|
|
23
|
-
async function hasValidRefreshTokenSaved(auth) {
|
|
24
|
-
if (!auth.isAuthenticated) {
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
return await checkIfAuthenticatedWithServer(auth);
|
|
28
|
-
}
|
|
29
23
|
async function startLoginPkceFlow(auth) {
|
|
30
24
|
if (cancelLoginEffect) {
|
|
25
|
+
if (debug) {
|
|
26
|
+
console.warn("Cancelling startLoginPkceFlow due to effect unsubscribe!");
|
|
27
|
+
}
|
|
31
28
|
return;
|
|
32
29
|
}
|
|
33
30
|
await auth.login();
|
|
@@ -47,15 +44,21 @@ export function useStartLoginOauthPKCEFlow({ onError, }) {
|
|
|
47
44
|
if (cancelLoginEffect) {
|
|
48
45
|
return;
|
|
49
46
|
}
|
|
50
|
-
|
|
47
|
+
const clientAuthenticationBelief = auth.isAuthenticated
|
|
48
|
+
? true
|
|
49
|
+
: false;
|
|
50
|
+
let serverAuthenticationBelief = false;
|
|
51
51
|
try {
|
|
52
|
-
|
|
52
|
+
serverAuthenticationBelief = (await checkIfAuthenticatedWithServer(auth))
|
|
53
|
+
? true
|
|
54
|
+
: false;
|
|
53
55
|
}
|
|
54
56
|
catch (e) {
|
|
55
57
|
// no-op
|
|
56
58
|
console.error("[useStartLoginOauthPKCEFlow] (No-op) Error checking if user already has a valid refresh token: ", e);
|
|
57
59
|
}
|
|
58
|
-
|
|
60
|
+
const shouldLogin = !clientAuthenticationBelief && !serverAuthenticationBelief;
|
|
61
|
+
if (!shouldLogin) {
|
|
59
62
|
if (cancelLoginEffect) {
|
|
60
63
|
return;
|
|
61
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-start-login-oauth-pkce-flow.js","sourceRoot":"","sources":["../../src/hooks/use-start-login-oauth-pkce-flow.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,iBAEN,MAAM,6BAA6B,CAAC;AACrC,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,iCAAiC,MAAM,gDAAgD,CAAC;AAC/F,OAAO,eAAe,MAAM,4BAA4B,CAAC;AACzD,OAAO,8BAA8B,MAAM,sCAAsC,CAAC;AASlF,MAAM,UAAU,0BAA0B,CAAC,EACzC,OAAO,GACyB;IAChC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,OAAO,EAAE,CAAC;IAC9B,MAAM,WAAW,GAA+B,iBAAiB,EAAE,CAAC;IACpE,MAAM,KAAK,GAAY,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,8BAA8B,GAAG,iCAAiC,EAAE,CAAC;IAC3E,MAAM,YAAY,GAAY,eAAe,EAAE,CAAC;IAChD,MAAM,2BAA2B,GAC/B,8BAA8B,EAAE,CAAC;IAEnC,SAAS,CAAC,GAAyB,EAAE;QACnC,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QAED,IAAI,iBAAiB,GAAY,KAAK,CAAC;QAEvC,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"use-start-login-oauth-pkce-flow.js","sourceRoot":"","sources":["../../src/hooks/use-start-login-oauth-pkce-flow.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@schemavaults/auth-react-provider",
|
|
3
3
|
"description": "React hooks and components to make using the @schemavaults/auth-client-sdk a breeze",
|
|
4
|
-
"version": "0.10.
|
|
4
|
+
"version": "0.10.25",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"private": false,
|
|
7
7
|
"repository": {
|
|
@@ -15,17 +15,17 @@
|
|
|
15
15
|
"types": "dist/index.d.ts",
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"zod": "3.25.8",
|
|
18
|
-
"@schemavaults/auth-client-sdk": "0.9.
|
|
19
|
-
"@schemavaults/app-definitions": "0.6.
|
|
20
|
-
"@schemavaults/auth-common": "0.10.
|
|
18
|
+
"@schemavaults/auth-client-sdk": "0.9.35",
|
|
19
|
+
"@schemavaults/app-definitions": "0.6.23",
|
|
20
|
+
"@schemavaults/auth-common": "0.10.6",
|
|
21
21
|
"cookies-next": "6.1.1",
|
|
22
22
|
"uuid": "11.0.3",
|
|
23
23
|
"swr": "2.3.4"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
|
-
"next": "16.
|
|
27
|
-
"react": "19.
|
|
28
|
-
"react-dom": "19.
|
|
26
|
+
"next": "16.2.2",
|
|
27
|
+
"react": "19.2.4",
|
|
28
|
+
"react-dom": "19.2.4"
|
|
29
29
|
},
|
|
30
30
|
"scripts": {
|
|
31
31
|
"build": "tsc --project tsconfig.json && tsc-alias -p tsconfig.json",
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"typescript": "5.9.3",
|
|
37
37
|
"tsc-alias": "1.8.16",
|
|
38
|
-
"bun-types": "1.3.
|
|
39
|
-
"@types/react": "19.
|
|
38
|
+
"bun-types": "1.3.11",
|
|
39
|
+
"@types/react": "19.2.14",
|
|
40
40
|
"eslint": "9.39.1",
|
|
41
41
|
"@eslint/js": "9.39.1",
|
|
42
42
|
"globals": "16.5.0",
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"publishConfig": {
|
|
50
50
|
"access": "public"
|
|
51
51
|
},
|
|
52
|
-
"packageManager": "bun@1.3.
|
|
52
|
+
"packageManager": "bun@1.3.11"
|
|
53
53
|
}
|