@avantmedia/id-react 0.0.3 → 0.0.5
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.d.ts +1 -1
- package/dist/hooks.js +1 -1
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/pkce.d.ts.map +1 -1
- package/dist/pkce.js +9 -12
- package/dist/pkce.js.map +1 -1
- package/dist/provider.d.ts +2 -2
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +125 -50
- package/dist/provider.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/hooks.d.ts
CHANGED
package/dist/hooks.js
CHANGED
package/dist/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,OAAO;
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,OAAO;IACnB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,GAAG,cAAc,EAAE,CAAC;IAClD,OAAO,SAAS,CAAC;AACrB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { AvantIdProvider } from
|
|
2
|
-
export { useAuth } from
|
|
3
|
-
export type { AvantIdConfig, User, TokenResponse, AuthState
|
|
4
|
-
export { generateCodeVerifier, generateCodeChallenge
|
|
1
|
+
export { AvantIdProvider } from './provider';
|
|
2
|
+
export { useAuth } from './hooks';
|
|
3
|
+
export type { AvantIdConfig, User, TokenResponse, AuthState } from './types';
|
|
4
|
+
export { generateCodeVerifier, generateCodeChallenge } from './pkce';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG7E,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Components
|
|
2
|
-
export { AvantIdProvider } from
|
|
2
|
+
export { AvantIdProvider } from './provider';
|
|
3
3
|
// Hooks
|
|
4
|
-
export { useAuth } from
|
|
4
|
+
export { useAuth } from './hooks';
|
|
5
5
|
// PKCE utilities (for advanced use cases)
|
|
6
|
-
export { generateCodeVerifier, generateCodeChallenge
|
|
6
|
+
export { generateCodeVerifier, generateCodeChallenge } from './pkce';
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,QAAQ;AACR,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,QAAQ;AACR,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKlC,0CAA0C;AAC1C,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC"}
|
package/dist/pkce.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkce.d.ts","sourceRoot":"","sources":["../src/pkce.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAI7C;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAc7E;
|
|
1
|
+
{"version":3,"file":"pkce.d.ts","sourceRoot":"","sources":["../src/pkce.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAI7C;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAc7E;AAgBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAExD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAIpD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAIlD"}
|
package/dist/pkce.js
CHANGED
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
* Get the crypto object, checking for availability
|
|
7
7
|
*/
|
|
8
8
|
function getCrypto() {
|
|
9
|
-
if (typeof globalThis !==
|
|
9
|
+
if (typeof globalThis !== 'undefined' && globalThis.crypto) {
|
|
10
10
|
return globalThis.crypto;
|
|
11
11
|
}
|
|
12
|
-
if (typeof window !==
|
|
12
|
+
if (typeof window !== 'undefined' && window.crypto) {
|
|
13
13
|
return window.crypto;
|
|
14
14
|
}
|
|
15
|
-
throw new Error(
|
|
15
|
+
throw new Error('Web Crypto API is not available');
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
18
|
* Generate a cryptographically random code verifier
|
|
@@ -30,12 +30,12 @@ export function generateCodeVerifier() {
|
|
|
30
30
|
export async function generateCodeChallenge(verifier) {
|
|
31
31
|
const cryptoObj = getCrypto();
|
|
32
32
|
if (!cryptoObj.subtle) {
|
|
33
|
-
throw new Error(
|
|
34
|
-
|
|
33
|
+
throw new Error('crypto.subtle is not available. This usually means you are not using HTTPS. ' +
|
|
34
|
+
'The Web Crypto API requires a secure context (HTTPS or localhost).');
|
|
35
35
|
}
|
|
36
36
|
const encoder = new TextEncoder();
|
|
37
37
|
const data = encoder.encode(verifier);
|
|
38
|
-
const hash = await cryptoObj.subtle.digest(
|
|
38
|
+
const hash = await cryptoObj.subtle.digest('SHA-256', data);
|
|
39
39
|
return base64UrlEncode(new Uint8Array(hash));
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
@@ -43,16 +43,13 @@ export async function generateCodeChallenge(verifier) {
|
|
|
43
43
|
*/
|
|
44
44
|
function base64UrlEncode(buffer) {
|
|
45
45
|
const base64 = btoa(String.fromCharCode(...buffer));
|
|
46
|
-
return base64
|
|
47
|
-
.replace(/\+/g, "-")
|
|
48
|
-
.replace(/\//g, "_")
|
|
49
|
-
.replace(/=+$/, "");
|
|
46
|
+
return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
|
|
50
47
|
}
|
|
51
48
|
/**
|
|
52
49
|
* Storage keys for PKCE state
|
|
53
50
|
*/
|
|
54
|
-
const VERIFIER_KEY =
|
|
55
|
-
const STATE_KEY =
|
|
51
|
+
const VERIFIER_KEY = 'avant_id_pkce_verifier';
|
|
52
|
+
const STATE_KEY = 'avant_id_oauth_state';
|
|
56
53
|
/**
|
|
57
54
|
* Store code verifier in sessionStorage for later retrieval
|
|
58
55
|
*/
|
package/dist/pkce.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkce.js","sourceRoot":"","sources":["../src/pkce.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,SAAS,SAAS;
|
|
1
|
+
{"version":3,"file":"pkce.js","sourceRoot":"","sources":["../src/pkce.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,SAAS,SAAS;IACd,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACzD,OAAO,UAAU,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAChC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,SAAS,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IACxD,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC;IAE9B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACX,8EAA8E;YAC1E,oEAAoE,CAC3E,CAAC;IACN,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5D,OAAO,eAAe,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,MAAkB;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED;;GAEG;AACH,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAC9C,MAAM,SAAS,GAAG,sBAAsB,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAC9C,cAAc,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAChC,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACtD,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACxC,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IACzB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACrC,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtD,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACrC,OAAO,WAAW,KAAK,KAAK,CAAC;AACjC,CAAC"}
|
package/dist/provider.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type ReactNode } from
|
|
2
|
-
import type {
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { AuthContextState, AvantIdConfig } from './types';
|
|
3
3
|
interface AvantIdProviderProps {
|
|
4
4
|
children: ReactNode;
|
|
5
5
|
config: AvantIdConfig;
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAU5G,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAuB,MAAM,SAAS,CAAC;AAuBpF,UAAU,oBAAoB;IAC1B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;CACzB;AAED,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CAwUzE;AAED,wBAAgB,cAAc,IAAI,gBAAgB,CAIjD"}
|
package/dist/provider.js
CHANGED
|
@@ -1,27 +1,38 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { createContext,
|
|
3
|
-
import
|
|
4
|
-
import
|
|
2
|
+
import { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';
|
|
3
|
+
import assert from './assert';
|
|
4
|
+
import { generateCodeChallenge, generateCodeVerifier, generateState, retrieveCodeVerifier, storeCodeVerifier, verifyState, } from './pkce';
|
|
5
5
|
const AuthContext = createContext(null);
|
|
6
|
+
function normalizeTokenResponse(raw) {
|
|
7
|
+
return {
|
|
8
|
+
access_token: raw.access_token ?? raw.accessToken,
|
|
9
|
+
refresh_token: raw.refresh_token ?? raw.refreshToken,
|
|
10
|
+
token_type: raw.token_type ?? raw.tokenType,
|
|
11
|
+
expires_in: raw.expires_in ?? raw.expiresIn,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
6
14
|
// Token storage keys
|
|
7
|
-
const ACCESS_TOKEN_KEY =
|
|
8
|
-
const REFRESH_TOKEN_KEY =
|
|
9
|
-
const TOKEN_EXPIRY_KEY =
|
|
15
|
+
const ACCESS_TOKEN_KEY = 'avant_id_access_token';
|
|
16
|
+
const REFRESH_TOKEN_KEY = 'avant_id_refresh_token';
|
|
17
|
+
const TOKEN_EXPIRY_KEY = 'avant_id_token_expiry';
|
|
10
18
|
export function AvantIdProvider({ children, config }) {
|
|
11
19
|
const [user, setUser] = useState(null);
|
|
12
20
|
const [isLoading, setIsLoading] = useState(true);
|
|
13
|
-
const [
|
|
21
|
+
const [, setAccessToken] = useState(null);
|
|
14
22
|
const [refreshToken, setRefreshToken] = useState(null);
|
|
15
|
-
const [
|
|
23
|
+
const [, setTokenExpiry] = useState(null);
|
|
24
|
+
const refreshPromiseRef = useRef(null);
|
|
25
|
+
const accessTokenRef = useRef(null);
|
|
26
|
+
const tokenExpiryRef = useRef(null);
|
|
16
27
|
// Normalize domain to ensure it has protocol
|
|
17
|
-
const baseUrl = config.domain.startsWith(
|
|
18
|
-
? config.domain
|
|
19
|
-
: `https://${config.domain}`;
|
|
28
|
+
const baseUrl = config.domain.startsWith('http') ? config.domain : `https://${config.domain}`;
|
|
20
29
|
// Default redirect URI
|
|
21
30
|
const redirectUri = config.redirectUri || `${window.location.origin}/callback`;
|
|
22
31
|
// Store tokens
|
|
23
32
|
const storeTokens = useCallback((tokens) => {
|
|
24
33
|
const expiry = Date.now() + tokens.expires_in * 1000;
|
|
34
|
+
accessTokenRef.current = tokens.access_token;
|
|
35
|
+
tokenExpiryRef.current = expiry;
|
|
25
36
|
setAccessToken(tokens.access_token);
|
|
26
37
|
setRefreshToken(tokens.refresh_token ?? null);
|
|
27
38
|
setTokenExpiry(expiry);
|
|
@@ -33,6 +44,8 @@ export function AvantIdProvider({ children, config }) {
|
|
|
33
44
|
}, [config.persistSession]);
|
|
34
45
|
// Clear tokens
|
|
35
46
|
const clearTokens = useCallback(() => {
|
|
47
|
+
accessTokenRef.current = null;
|
|
48
|
+
tokenExpiryRef.current = null;
|
|
36
49
|
setAccessToken(null);
|
|
37
50
|
setRefreshToken(null);
|
|
38
51
|
setTokenExpiry(null);
|
|
@@ -60,45 +73,67 @@ export function AvantIdProvider({ children, config }) {
|
|
|
60
73
|
const refreshAccessToken = useCallback(async (token) => {
|
|
61
74
|
try {
|
|
62
75
|
const response = await fetch(`${baseUrl}/auth/refresh`, {
|
|
63
|
-
method:
|
|
64
|
-
headers: {
|
|
76
|
+
method: 'POST',
|
|
77
|
+
headers: { 'Content-Type': 'application/json' },
|
|
65
78
|
body: JSON.stringify({ refreshToken: token }),
|
|
66
79
|
});
|
|
67
80
|
if (!response.ok) {
|
|
68
|
-
return
|
|
81
|
+
return { status: 'rejected' };
|
|
69
82
|
}
|
|
70
|
-
|
|
83
|
+
const raw = await response.json();
|
|
84
|
+
return { status: 'success', tokens: normalizeTokenResponse(raw) };
|
|
71
85
|
}
|
|
72
86
|
catch {
|
|
73
|
-
return
|
|
87
|
+
return { status: 'error' };
|
|
74
88
|
}
|
|
75
89
|
}, [baseUrl]);
|
|
76
90
|
// Get access token, refreshing if needed
|
|
77
91
|
const getAccessToken = useCallback(async () => {
|
|
78
|
-
// Check if current token is still valid (with 30s buffer)
|
|
79
|
-
if (
|
|
80
|
-
return
|
|
92
|
+
// Check if current token is still valid (with 30s buffer) — read from refs to avoid stale closures
|
|
93
|
+
if (accessTokenRef.current && tokenExpiryRef.current && Date.now() < tokenExpiryRef.current - 30000) {
|
|
94
|
+
return accessTokenRef.current;
|
|
95
|
+
}
|
|
96
|
+
// Deduplicate concurrent refresh attempts
|
|
97
|
+
if (refreshPromiseRef.current) {
|
|
98
|
+
const result = await refreshPromiseRef.current;
|
|
99
|
+
return result.status === 'success' ? result.tokens.access_token : null;
|
|
81
100
|
}
|
|
101
|
+
// Read latest refresh token from localStorage (cross-tab safe) or fall back to state
|
|
102
|
+
const currentRefreshToken = config.persistSession
|
|
103
|
+
? localStorage.getItem(REFRESH_TOKEN_KEY)
|
|
104
|
+
: refreshToken;
|
|
82
105
|
// Try to refresh
|
|
83
|
-
if (
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
106
|
+
if (currentRefreshToken) {
|
|
107
|
+
const promise = refreshAccessToken(currentRefreshToken);
|
|
108
|
+
refreshPromiseRef.current = promise;
|
|
109
|
+
try {
|
|
110
|
+
const result = await promise;
|
|
111
|
+
if (result.status === 'success') {
|
|
112
|
+
storeTokens(result.tokens);
|
|
113
|
+
return result.tokens.access_token;
|
|
114
|
+
}
|
|
115
|
+
// Only clear session on explicit server rejection, not transient errors
|
|
116
|
+
if (result.status === 'rejected') {
|
|
117
|
+
clearTokens();
|
|
118
|
+
}
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
refreshPromiseRef.current = null;
|
|
88
123
|
}
|
|
89
124
|
}
|
|
90
|
-
// No
|
|
125
|
+
// No refresh token available
|
|
91
126
|
clearTokens();
|
|
92
127
|
return null;
|
|
93
|
-
}, [
|
|
128
|
+
}, [refreshToken, config.persistSession, refreshAccessToken, storeTokens, clearTokens]);
|
|
94
129
|
// Exchange authorization code for tokens
|
|
95
130
|
const exchangeCode = useCallback(async (code, codeVerifier) => {
|
|
96
131
|
try {
|
|
97
132
|
const response = await fetch(`${baseUrl}/oauth/token`, {
|
|
98
|
-
method:
|
|
99
|
-
headers: {
|
|
133
|
+
method: 'POST',
|
|
134
|
+
headers: { 'Content-Type': 'application/json' },
|
|
100
135
|
body: JSON.stringify({
|
|
101
|
-
grant_type:
|
|
136
|
+
grant_type: 'authorization_code',
|
|
102
137
|
code,
|
|
103
138
|
code_verifier: codeVerifier,
|
|
104
139
|
client_id: config.clientId,
|
|
@@ -106,7 +141,7 @@ export function AvantIdProvider({ children, config }) {
|
|
|
106
141
|
}),
|
|
107
142
|
});
|
|
108
143
|
if (!response.ok) {
|
|
109
|
-
console.error(
|
|
144
|
+
console.error('Token exchange failed:', await response.text());
|
|
110
145
|
return false;
|
|
111
146
|
}
|
|
112
147
|
const tokens = await response.json();
|
|
@@ -119,7 +154,7 @@ export function AvantIdProvider({ children, config }) {
|
|
|
119
154
|
return true;
|
|
120
155
|
}
|
|
121
156
|
catch (err) {
|
|
122
|
-
console.error(
|
|
157
|
+
console.error('Token exchange error:', err);
|
|
123
158
|
return false;
|
|
124
159
|
}
|
|
125
160
|
}, [baseUrl, config.clientId, redirectUri, storeTokens, fetchUser]);
|
|
@@ -134,9 +169,9 @@ export function AvantIdProvider({ children, config }) {
|
|
|
134
169
|
const params = new URLSearchParams({
|
|
135
170
|
client_id: config.clientId,
|
|
136
171
|
redirect_uri: redirectUri,
|
|
137
|
-
response_type:
|
|
172
|
+
response_type: 'code',
|
|
138
173
|
code_challenge: challenge,
|
|
139
|
-
code_challenge_method:
|
|
174
|
+
code_challenge_method: 'S256',
|
|
140
175
|
state,
|
|
141
176
|
});
|
|
142
177
|
window.location.href = `${baseUrl}/oauth/authorize?${params.toString()}`;
|
|
@@ -147,8 +182,8 @@ export function AvantIdProvider({ children, config }) {
|
|
|
147
182
|
if (refreshToken) {
|
|
148
183
|
try {
|
|
149
184
|
await fetch(`${baseUrl}/auth/logout`, {
|
|
150
|
-
method:
|
|
151
|
-
headers: {
|
|
185
|
+
method: 'POST',
|
|
186
|
+
headers: { 'Content-Type': 'application/json' },
|
|
152
187
|
body: JSON.stringify({ refreshToken }),
|
|
153
188
|
});
|
|
154
189
|
}
|
|
@@ -162,24 +197,24 @@ export function AvantIdProvider({ children, config }) {
|
|
|
162
197
|
useEffect(() => {
|
|
163
198
|
const handleCallback = async () => {
|
|
164
199
|
const params = new URLSearchParams(window.location.search);
|
|
165
|
-
const code = params.get(
|
|
166
|
-
const state = params.get(
|
|
167
|
-
const error = params.get(
|
|
200
|
+
const code = params.get('code');
|
|
201
|
+
const state = params.get('state');
|
|
202
|
+
const error = params.get('error');
|
|
168
203
|
if (error) {
|
|
169
|
-
console.error(
|
|
204
|
+
console.error('OAuth error:', error, params.get('error_description'));
|
|
170
205
|
setIsLoading(false);
|
|
171
206
|
return;
|
|
172
207
|
}
|
|
173
208
|
if (code && state) {
|
|
174
209
|
// Verify state
|
|
175
|
-
assert(verifyState(state),
|
|
210
|
+
assert(verifyState(state), 'State mismatch - possible CSRF attack');
|
|
176
211
|
// Get stored code verifier
|
|
177
212
|
const codeVerifier = retrieveCodeVerifier();
|
|
178
|
-
assert(codeVerifier,
|
|
213
|
+
assert(codeVerifier, 'No code verifier found');
|
|
179
214
|
// Exchange code for tokens
|
|
180
215
|
await exchangeCode(code, codeVerifier);
|
|
181
216
|
// Clean up URL
|
|
182
|
-
window.history.replaceState({},
|
|
217
|
+
window.history.replaceState({}, '', window.location.pathname);
|
|
183
218
|
setIsLoading(false);
|
|
184
219
|
return;
|
|
185
220
|
}
|
|
@@ -187,25 +222,65 @@ export function AvantIdProvider({ children, config }) {
|
|
|
187
222
|
if (config.persistSession) {
|
|
188
223
|
const storedRefresh = localStorage.getItem(REFRESH_TOKEN_KEY);
|
|
189
224
|
// Check for valid refresh token (not empty, not the string "undefined" or "null")
|
|
190
|
-
if (storedRefresh && storedRefresh !==
|
|
225
|
+
if (storedRefresh && storedRefresh !== 'undefined' && storedRefresh !== 'null') {
|
|
191
226
|
setRefreshToken(storedRefresh);
|
|
192
|
-
const
|
|
193
|
-
if (
|
|
194
|
-
storeTokens(tokens);
|
|
195
|
-
const userProfile = await fetchUser(tokens.access_token);
|
|
227
|
+
const result = await refreshAccessToken(storedRefresh);
|
|
228
|
+
if (result.status === 'success') {
|
|
229
|
+
storeTokens(result.tokens);
|
|
230
|
+
const userProfile = await fetchUser(result.tokens.access_token);
|
|
196
231
|
if (userProfile) {
|
|
197
232
|
setUser(userProfile);
|
|
198
233
|
}
|
|
199
234
|
}
|
|
200
|
-
else {
|
|
235
|
+
else if (result.status === 'rejected') {
|
|
201
236
|
clearTokens();
|
|
202
237
|
}
|
|
238
|
+
// On 'error': leave refresh token intact for retry
|
|
203
239
|
}
|
|
204
240
|
}
|
|
205
241
|
setIsLoading(false);
|
|
206
242
|
};
|
|
207
243
|
handleCallback();
|
|
208
|
-
}, [
|
|
244
|
+
}, [
|
|
245
|
+
config.persistSession,
|
|
246
|
+
exchangeCode,
|
|
247
|
+
refreshAccessToken,
|
|
248
|
+
storeTokens,
|
|
249
|
+
fetchUser,
|
|
250
|
+
clearTokens,
|
|
251
|
+
]);
|
|
252
|
+
// Cross-tab sync: update state when another tab writes/clears the refresh token
|
|
253
|
+
useEffect(() => {
|
|
254
|
+
if (!config.persistSession)
|
|
255
|
+
return;
|
|
256
|
+
const handleStorage = (e) => {
|
|
257
|
+
if (e.key !== REFRESH_TOKEN_KEY)
|
|
258
|
+
return;
|
|
259
|
+
if (e.newValue) {
|
|
260
|
+
// Another tab stored a new refresh token — update React state
|
|
261
|
+
setRefreshToken(e.newValue);
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
// Another tab cleared the token (logout) — clear local state
|
|
265
|
+
clearTokens();
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
window.addEventListener('storage', handleStorage);
|
|
269
|
+
return () => window.removeEventListener('storage', handleStorage);
|
|
270
|
+
}, [config.persistSession, clearTokens]);
|
|
271
|
+
// Proactive refresh when tab becomes visible and token is near expiry
|
|
272
|
+
useEffect(() => {
|
|
273
|
+
const handleVisibility = () => {
|
|
274
|
+
if (document.visibilityState !== 'visible')
|
|
275
|
+
return;
|
|
276
|
+
// Refresh if token expires within 60s
|
|
277
|
+
if (tokenExpiryRef.current && Date.now() > tokenExpiryRef.current - 60000) {
|
|
278
|
+
getAccessToken();
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
document.addEventListener('visibilitychange', handleVisibility);
|
|
282
|
+
return () => document.removeEventListener('visibilitychange', handleVisibility);
|
|
283
|
+
}, [getAccessToken]);
|
|
209
284
|
const value = {
|
|
210
285
|
user,
|
|
211
286
|
isLoading,
|
|
@@ -219,7 +294,7 @@ export function AvantIdProvider({ children, config }) {
|
|
|
219
294
|
}
|
|
220
295
|
export function useAuthContext() {
|
|
221
296
|
const context = useContext(AuthContext);
|
|
222
|
-
assert(context,
|
|
297
|
+
assert(context, 'useAuth must be used within an AvantIdProvider');
|
|
223
298
|
return context;
|
|
224
299
|
}
|
|
225
300
|
//# sourceMappingURL=provider.js.map
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,aAAa;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,+FAA+F;IAC/F,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,gDAAgD;IAChD,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,eAAe,EAAE,OAAO,CAAC;IACzB,sCAAsC;IACtC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,0DAA0D;IAC1D,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,0DAA0D;IAC1D,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IAC/C,MAAM,EAAE,aAAa,CAAC;CACzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@avantmedia/id-react",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"react": "^18.0.0 || ^19.0.0"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@types/react": "^
|
|
31
|
-
"react": "^
|
|
32
|
-
"typescript": "^5.
|
|
30
|
+
"@types/react": "^19.2.13",
|
|
31
|
+
"react": "^19.2.4",
|
|
32
|
+
"typescript": "^5.9.3"
|
|
33
33
|
}
|
|
34
34
|
}
|