@oxyhq/services 5.23.0 → 5.24.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/lib/commonjs/web/WebOxyContext.js +17 -62
- package/lib/commonjs/web/WebOxyContext.js.map +1 -1
- package/lib/module/web/WebOxyContext.js +17 -62
- package/lib/module/web/WebOxyContext.js.map +1 -1
- package/lib/typescript/commonjs/web/WebOxyContext.d.ts.map +1 -1
- package/lib/typescript/module/web/WebOxyContext.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/web/WebOxyContext.tsx +20 -65
|
@@ -42,55 +42,14 @@ function WebOxyProvider({
|
|
|
42
42
|
let mounted = true;
|
|
43
43
|
const initAuth = async () => {
|
|
44
44
|
try {
|
|
45
|
-
// Try to get
|
|
46
|
-
const
|
|
47
|
-
if (
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
// Try to get user info from the active session's userId
|
|
51
|
-
if (activeSession && activeSession.userId) {
|
|
52
|
-
try {
|
|
53
|
-
const userProfile = await oxyServices.getProfile(activeSession.userId);
|
|
54
|
-
if (mounted && userProfile) {
|
|
55
|
-
setUser(userProfile);
|
|
56
|
-
setIsLoading(false);
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
} catch (err) {
|
|
60
|
-
console.log('[WebOxy] Could not fetch user profile:', err);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// No active session - check for cross-domain SSO via FedCM
|
|
66
|
-
if (typeof window !== 'undefined' && 'IdentityCredential' in window) {
|
|
67
|
-
try {
|
|
68
|
-
const credential = await navigator.credentials.get({
|
|
69
|
-
// @ts-expect-error - FedCM identity property is not in standard types
|
|
70
|
-
identity: {
|
|
71
|
-
providers: [{
|
|
72
|
-
configURL: `${authWebUrl || 'https://auth.oxy.so'}/fedcm.json`,
|
|
73
|
-
clientId: window.location.origin
|
|
74
|
-
}]
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
if (credential && 'token' in credential) {
|
|
78
|
-
// Use the token to authenticate
|
|
79
|
-
const session = await oxyServices.authenticateWithToken(credential.token);
|
|
80
|
-
if (mounted && session.user) {
|
|
81
|
-
setUser(session.user);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
} catch (fedcmError) {
|
|
85
|
-
// FedCM not available or user cancelled - this is fine
|
|
86
|
-
console.log('[WebOxy] FedCM SSO not available:', fedcmError);
|
|
87
|
-
}
|
|
45
|
+
// Try to get current user (will use existing auth token if available)
|
|
46
|
+
const currentUser = await oxyServices.getCurrentUser();
|
|
47
|
+
if (mounted && currentUser) {
|
|
48
|
+
setUser(currentUser);
|
|
88
49
|
}
|
|
89
50
|
} catch (err) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
setError(err instanceof Error ? err.message : 'Failed to initialize auth');
|
|
93
|
-
}
|
|
51
|
+
// No active session - this is fine
|
|
52
|
+
console.log('[WebOxy] No active session');
|
|
94
53
|
} finally {
|
|
95
54
|
if (mounted) {
|
|
96
55
|
setIsLoading(false);
|
|
@@ -101,7 +60,7 @@ function WebOxyProvider({
|
|
|
101
60
|
return () => {
|
|
102
61
|
mounted = false;
|
|
103
62
|
};
|
|
104
|
-
}, [oxyServices
|
|
63
|
+
}, [oxyServices]);
|
|
105
64
|
|
|
106
65
|
// Notify parent of auth state changes
|
|
107
66
|
(0, _react.useEffect)(() => {
|
|
@@ -124,21 +83,14 @@ function WebOxyProvider({
|
|
|
124
83
|
}
|
|
125
84
|
if (event.data.type === 'oxy-auth-success') {
|
|
126
85
|
const {
|
|
127
|
-
sessionId,
|
|
128
86
|
accessToken,
|
|
129
87
|
user: authUser
|
|
130
88
|
} = event.data;
|
|
131
89
|
|
|
132
|
-
// Store
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
expiresAt: event.data.expiresAt || '',
|
|
137
|
-
lastActive: new Date().toISOString(),
|
|
138
|
-
userId: authUser.id,
|
|
139
|
-
isCurrent: true
|
|
140
|
-
};
|
|
141
|
-
await oxyServices.storeSession(session);
|
|
90
|
+
// Store the access token for API requests
|
|
91
|
+
if (typeof window !== 'undefined' && accessToken) {
|
|
92
|
+
localStorage.setItem('oxy-access-token', accessToken);
|
|
93
|
+
}
|
|
142
94
|
setUser(authUser);
|
|
143
95
|
setIsLoading(false);
|
|
144
96
|
window.removeEventListener('message', handleMessage);
|
|
@@ -165,17 +117,20 @@ function WebOxyProvider({
|
|
|
165
117
|
setError(err instanceof Error ? err.message : 'Sign in failed');
|
|
166
118
|
setIsLoading(false);
|
|
167
119
|
}
|
|
168
|
-
}, [
|
|
120
|
+
}, [authWebUrl]);
|
|
169
121
|
const signOut = (0, _react.useCallback)(async () => {
|
|
170
122
|
setError(null);
|
|
171
123
|
try {
|
|
172
|
-
|
|
124
|
+
// Clear stored token
|
|
125
|
+
if (typeof window !== 'undefined') {
|
|
126
|
+
localStorage.removeItem('oxy-access-token');
|
|
127
|
+
}
|
|
173
128
|
setUser(null);
|
|
174
129
|
} catch (err) {
|
|
175
130
|
console.error('[WebOxy] Sign out error:', err);
|
|
176
131
|
setError(err instanceof Error ? err.message : 'Sign out failed');
|
|
177
132
|
}
|
|
178
|
-
}, [
|
|
133
|
+
}, []);
|
|
179
134
|
const contextValue = {
|
|
180
135
|
user,
|
|
181
136
|
isAuthenticated,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_index","_reactQuery","_queryClient","_jsxRuntime","WebOxyContext","createContext","WebOxyProvider","children","baseURL","authWebUrl","onAuthStateChange","oxyServices","useState","OxyServices","user","setUser","isLoading","setIsLoading","error","setError","queryClient","createQueryClient","isAuthenticated","useEffect","mounted","initAuth","
|
|
1
|
+
{"version":3,"names":["_react","require","_index","_reactQuery","_queryClient","_jsxRuntime","WebOxyContext","createContext","WebOxyProvider","children","baseURL","authWebUrl","onAuthStateChange","oxyServices","useState","OxyServices","user","setUser","isLoading","setIsLoading","error","setError","queryClient","createQueryClient","isAuthenticated","useEffect","mounted","initAuth","currentUser","getCurrentUser","err","console","log","signIn","useCallback","popup","window","open","encodeURIComponent","location","origin","Error","handleMessage","event","data","type","accessToken","authUser","localStorage","setItem","removeEventListener","close","addEventListener","checkClosed","setInterval","closed","clearInterval","message","signOut","removeItem","contextValue","jsx","QueryClientProvider","client","Provider","value","useWebOxy","context","useContext","useAuth","isReady"],"sourceRoot":"../../../src","sources":["web/WebOxyContext.tsx"],"mappings":";;;;;;;;AAKA,IAAAA,MAAA,GAAAC,OAAA;AAQA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAA4D,IAAAI,WAAA,GAAAJ,OAAA;AAhB5D;AACA;AACA;AACA;;AA+BA,MAAMK,aAAa,gBAAG,IAAAC,oBAAa,EAA4B,IAAI,CAAC;AASpE;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAAC;EAC7BC,QAAQ;EACRC,OAAO;EACPC,UAAU;EACVC;AACmB,CAAC,EAAE;EACtB,MAAM,CAACC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EAAC,MAAM,IAAIC,kBAAW,CAAC;IAAEL,OAAO;IAAEC;EAAW,CAAC,CAAC,CAAC;EAC9E,MAAM,CAACK,IAAI,EAAEC,OAAO,CAAC,GAAG,IAAAH,eAAQ,EAAc,IAAI,CAAC;EACnD,MAAM,CAACI,SAAS,EAAEC,YAAY,CAAC,GAAG,IAAAL,eAAQ,EAAC,IAAI,CAAC;EAChD,MAAM,CAACM,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAP,eAAQ,EAAgB,IAAI,CAAC;EACvD,MAAM,CAACQ,WAAW,CAAC,GAAG,IAAAR,eAAQ,EAAC,MAAM,IAAAS,8BAAiB,EAAC,CAAC,CAAC;EAEzD,MAAMC,eAAe,GAAG,CAAC,CAACR,IAAI;;EAE9B;EACA,IAAAS,gBAAS,EAAC,MAAM;IACd,IAAIC,OAAO,GAAG,IAAI;IAElB,MAAMC,QAAQ,GAAG,MAAAA,CAAA,KAAY;MAC3B,IAAI;QACF;QACA,MAAMC,WAAW,GAAG,MAAMf,WAAW,CAACgB,cAAc,CAAC,CAAC;QAEtD,IAAIH,OAAO,IAAIE,WAAW,EAAE;UAC1BX,OAAO,CAACW,WAAW,CAAC;QACtB;MACF,CAAC,CAAC,OAAOE,GAAG,EAAE;QACZ;QACAC,OAAO,CAACC,GAAG,CAAC,4BAA4B,CAAC;MAC3C,CAAC,SAAS;QACR,IAAIN,OAAO,EAAE;UACXP,YAAY,CAAC,KAAK,CAAC;QACrB;MACF;IACF,CAAC;IAEDQ,QAAQ,CAAC,CAAC;IAEV,OAAO,MAAM;MACXD,OAAO,GAAG,KAAK;IACjB,CAAC;EACH,CAAC,EAAE,CAACb,WAAW,CAAC,CAAC;;EAEjB;EACA,IAAAY,gBAAS,EAAC,MAAM;IACdb,iBAAiB,GAAGI,IAAI,CAAC;EAC3B,CAAC,EAAE,CAACA,IAAI,EAAEJ,iBAAiB,CAAC,CAAC;EAE7B,MAAMqB,MAAM,GAAG,IAAAC,kBAAW,EAAC,YAAY;IACrCb,QAAQ,CAAC,IAAI,CAAC;IACdF,YAAY,CAAC,IAAI,CAAC;IAElB,IAAI;MACF;MACA,MAAMgB,KAAK,GAAGC,MAAM,CAACC,IAAI,CACvB,GAAG1B,UAAU,IAAI,qBAAqB,iBAAiB2B,kBAAkB,CAACF,MAAM,CAACG,QAAQ,CAACC,MAAM,CAAC,EAAE,EACnG,UAAU,EACV,gCACF,CAAC;MAED,IAAI,CAACL,KAAK,EAAE;QACV,MAAM,IAAIM,KAAK,CAAC,mDAAmD,CAAC;MACtE;;MAEA;MACA,MAAMC,aAAa,GAAG,MAAOC,KAAmB,IAAK;QACnD,IAAIA,KAAK,CAACH,MAAM,MAAM7B,UAAU,IAAI,qBAAqB,CAAC,EAAE;UAC1D;QACF;QAEA,IAAIgC,KAAK,CAACC,IAAI,CAACC,IAAI,KAAK,kBAAkB,EAAE;UAC1C,MAAM;YAAEC,WAAW;YAAE9B,IAAI,EAAE+B;UAAS,CAAC,GAAGJ,KAAK,CAACC,IAAI;;UAElD;UACA,IAAI,OAAOR,MAAM,KAAK,WAAW,IAAIU,WAAW,EAAE;YAChDE,YAAY,CAACC,OAAO,CAAC,kBAAkB,EAAEH,WAAW,CAAC;UACvD;UAEA7B,OAAO,CAAC8B,QAAQ,CAAC;UACjB5B,YAAY,CAAC,KAAK,CAAC;UAEnBiB,MAAM,CAACc,mBAAmB,CAAC,SAAS,EAAER,aAAa,CAAC;UACpDP,KAAK,CAACgB,KAAK,CAAC,CAAC;QACf,CAAC,MAAM,IAAIR,KAAK,CAACC,IAAI,CAACC,IAAI,KAAK,gBAAgB,EAAE;UAC/CxB,QAAQ,CAACsB,KAAK,CAACC,IAAI,CAACxB,KAAK,IAAI,uBAAuB,CAAC;UACrDD,YAAY,CAAC,KAAK,CAAC;UACnBiB,MAAM,CAACc,mBAAmB,CAAC,SAAS,EAAER,aAAa,CAAC;UACpDP,KAAK,CAACgB,KAAK,CAAC,CAAC;QACf;MACF,CAAC;MAEDf,MAAM,CAACgB,gBAAgB,CAAC,SAAS,EAAEV,aAAa,CAAC;;MAEjD;MACA,MAAMW,WAAW,GAAGC,WAAW,CAAC,MAAM;QACpC,IAAInB,KAAK,CAACoB,MAAM,EAAE;UAChBC,aAAa,CAACH,WAAW,CAAC;UAC1BjB,MAAM,CAACc,mBAAmB,CAAC,SAAS,EAAER,aAAa,CAAC;UACpDvB,YAAY,CAAC,KAAK,CAAC;QACrB;MACF,CAAC,EAAE,GAAG,CAAC;IACT,CAAC,CAAC,OAAOW,GAAG,EAAE;MACZC,OAAO,CAACX,KAAK,CAAC,yBAAyB,EAAEU,GAAG,CAAC;MAC7CT,QAAQ,CAACS,GAAG,YAAYW,KAAK,GAAGX,GAAG,CAAC2B,OAAO,GAAG,gBAAgB,CAAC;MAC/DtC,YAAY,CAAC,KAAK,CAAC;IACrB;EACF,CAAC,EAAE,CAACR,UAAU,CAAC,CAAC;EAEhB,MAAM+C,OAAO,GAAG,IAAAxB,kBAAW,EAAC,YAAY;IACtCb,QAAQ,CAAC,IAAI,CAAC;IAEd,IAAI;MACF;MACA,IAAI,OAAOe,MAAM,KAAK,WAAW,EAAE;QACjCY,YAAY,CAACW,UAAU,CAAC,kBAAkB,CAAC;MAC7C;MAEA1C,OAAO,CAAC,IAAI,CAAC;IACf,CAAC,CAAC,OAAOa,GAAG,EAAE;MACZC,OAAO,CAACX,KAAK,CAAC,0BAA0B,EAAEU,GAAG,CAAC;MAC9CT,QAAQ,CAACS,GAAG,YAAYW,KAAK,GAAGX,GAAG,CAAC2B,OAAO,GAAG,iBAAiB,CAAC;IAClE;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMG,YAAgC,GAAG;IACvC5C,IAAI;IACJQ,eAAe;IACfN,SAAS;IACTE,KAAK;IACLa,MAAM;IACNyB,OAAO;IACP7C;EACF,CAAC;EAED,oBACE,IAAAR,WAAA,CAAAwD,GAAA,EAAC1D,WAAA,CAAA2D,mBAAmB;IAACC,MAAM,EAAEzC,WAAY;IAAAb,QAAA,eACvC,IAAAJ,WAAA,CAAAwD,GAAA,EAACvD,aAAa,CAAC0D,QAAQ;MAACC,KAAK,EAAEL,YAAa;MAAAnD,QAAA,EACzCA;IAAQ,CACa;EAAC,CACN,CAAC;AAE1B;AAEO,SAASyD,SAASA,CAAA,EAAG;EAC1B,MAAMC,OAAO,GAAG,IAAAC,iBAAU,EAAC9D,aAAa,CAAC;EACzC,IAAI,CAAC6D,OAAO,EAAE;IACZ,MAAM,IAAI1B,KAAK,CAAC,8CAA8C,CAAC;EACjE;EACA,OAAO0B,OAAO;AAChB;AAEO,SAASE,OAAOA,CAAA,EAAG;EACxB,MAAM;IAAErD,IAAI;IAAEQ,eAAe;IAAEN,SAAS;IAAEE,KAAK;IAAEa,MAAM;IAAEyB,OAAO;IAAE7C;EAAY,CAAC,GAAGqD,SAAS,CAAC,CAAC;EAE7F,OAAO;IACLlD,IAAI;IACJQ,eAAe;IACfN,SAAS;IACToD,OAAO,EAAE,CAACpD,SAAS;IACnBE,KAAK;IACLa,MAAM;IACNyB,OAAO;IACP7C;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -36,55 +36,14 @@ export function WebOxyProvider({
|
|
|
36
36
|
let mounted = true;
|
|
37
37
|
const initAuth = async () => {
|
|
38
38
|
try {
|
|
39
|
-
// Try to get
|
|
40
|
-
const
|
|
41
|
-
if (
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
// Try to get user info from the active session's userId
|
|
45
|
-
if (activeSession && activeSession.userId) {
|
|
46
|
-
try {
|
|
47
|
-
const userProfile = await oxyServices.getProfile(activeSession.userId);
|
|
48
|
-
if (mounted && userProfile) {
|
|
49
|
-
setUser(userProfile);
|
|
50
|
-
setIsLoading(false);
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
} catch (err) {
|
|
54
|
-
console.log('[WebOxy] Could not fetch user profile:', err);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// No active session - check for cross-domain SSO via FedCM
|
|
60
|
-
if (typeof window !== 'undefined' && 'IdentityCredential' in window) {
|
|
61
|
-
try {
|
|
62
|
-
const credential = await navigator.credentials.get({
|
|
63
|
-
// @ts-expect-error - FedCM identity property is not in standard types
|
|
64
|
-
identity: {
|
|
65
|
-
providers: [{
|
|
66
|
-
configURL: `${authWebUrl || 'https://auth.oxy.so'}/fedcm.json`,
|
|
67
|
-
clientId: window.location.origin
|
|
68
|
-
}]
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
if (credential && 'token' in credential) {
|
|
72
|
-
// Use the token to authenticate
|
|
73
|
-
const session = await oxyServices.authenticateWithToken(credential.token);
|
|
74
|
-
if (mounted && session.user) {
|
|
75
|
-
setUser(session.user);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
} catch (fedcmError) {
|
|
79
|
-
// FedCM not available or user cancelled - this is fine
|
|
80
|
-
console.log('[WebOxy] FedCM SSO not available:', fedcmError);
|
|
81
|
-
}
|
|
39
|
+
// Try to get current user (will use existing auth token if available)
|
|
40
|
+
const currentUser = await oxyServices.getCurrentUser();
|
|
41
|
+
if (mounted && currentUser) {
|
|
42
|
+
setUser(currentUser);
|
|
82
43
|
}
|
|
83
44
|
} catch (err) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
setError(err instanceof Error ? err.message : 'Failed to initialize auth');
|
|
87
|
-
}
|
|
45
|
+
// No active session - this is fine
|
|
46
|
+
console.log('[WebOxy] No active session');
|
|
88
47
|
} finally {
|
|
89
48
|
if (mounted) {
|
|
90
49
|
setIsLoading(false);
|
|
@@ -95,7 +54,7 @@ export function WebOxyProvider({
|
|
|
95
54
|
return () => {
|
|
96
55
|
mounted = false;
|
|
97
56
|
};
|
|
98
|
-
}, [oxyServices
|
|
57
|
+
}, [oxyServices]);
|
|
99
58
|
|
|
100
59
|
// Notify parent of auth state changes
|
|
101
60
|
useEffect(() => {
|
|
@@ -118,21 +77,14 @@ export function WebOxyProvider({
|
|
|
118
77
|
}
|
|
119
78
|
if (event.data.type === 'oxy-auth-success') {
|
|
120
79
|
const {
|
|
121
|
-
sessionId,
|
|
122
80
|
accessToken,
|
|
123
81
|
user: authUser
|
|
124
82
|
} = event.data;
|
|
125
83
|
|
|
126
|
-
// Store
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
expiresAt: event.data.expiresAt || '',
|
|
131
|
-
lastActive: new Date().toISOString(),
|
|
132
|
-
userId: authUser.id,
|
|
133
|
-
isCurrent: true
|
|
134
|
-
};
|
|
135
|
-
await oxyServices.storeSession(session);
|
|
84
|
+
// Store the access token for API requests
|
|
85
|
+
if (typeof window !== 'undefined' && accessToken) {
|
|
86
|
+
localStorage.setItem('oxy-access-token', accessToken);
|
|
87
|
+
}
|
|
136
88
|
setUser(authUser);
|
|
137
89
|
setIsLoading(false);
|
|
138
90
|
window.removeEventListener('message', handleMessage);
|
|
@@ -159,17 +111,20 @@ export function WebOxyProvider({
|
|
|
159
111
|
setError(err instanceof Error ? err.message : 'Sign in failed');
|
|
160
112
|
setIsLoading(false);
|
|
161
113
|
}
|
|
162
|
-
}, [
|
|
114
|
+
}, [authWebUrl]);
|
|
163
115
|
const signOut = useCallback(async () => {
|
|
164
116
|
setError(null);
|
|
165
117
|
try {
|
|
166
|
-
|
|
118
|
+
// Clear stored token
|
|
119
|
+
if (typeof window !== 'undefined') {
|
|
120
|
+
localStorage.removeItem('oxy-access-token');
|
|
121
|
+
}
|
|
167
122
|
setUser(null);
|
|
168
123
|
} catch (err) {
|
|
169
124
|
console.error('[WebOxy] Sign out error:', err);
|
|
170
125
|
setError(err instanceof Error ? err.message : 'Sign out failed');
|
|
171
126
|
}
|
|
172
|
-
}, [
|
|
127
|
+
}, []);
|
|
173
128
|
const contextValue = {
|
|
174
129
|
user,
|
|
175
130
|
isAuthenticated,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContext","useCallback","useContext","useEffect","useState","OxyServices","QueryClientProvider","createQueryClient","jsx","_jsx","WebOxyContext","WebOxyProvider","children","baseURL","authWebUrl","onAuthStateChange","oxyServices","user","setUser","isLoading","setIsLoading","error","setError","queryClient","isAuthenticated","mounted","initAuth","
|
|
1
|
+
{"version":3,"names":["createContext","useCallback","useContext","useEffect","useState","OxyServices","QueryClientProvider","createQueryClient","jsx","_jsx","WebOxyContext","WebOxyProvider","children","baseURL","authWebUrl","onAuthStateChange","oxyServices","user","setUser","isLoading","setIsLoading","error","setError","queryClient","isAuthenticated","mounted","initAuth","currentUser","getCurrentUser","err","console","log","signIn","popup","window","open","encodeURIComponent","location","origin","Error","handleMessage","event","data","type","accessToken","authUser","localStorage","setItem","removeEventListener","close","addEventListener","checkClosed","setInterval","closed","clearInterval","message","signOut","removeItem","contextValue","client","Provider","value","useWebOxy","context","useAuth","isReady"],"sourceRoot":"../../../src","sources":["web/WebOxyContext.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebOxyContext.d.ts","sourceRoot":"","sources":["../../../../src/web/WebOxyContext.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"WebOxyContext.d.ts","sourceRoot":"","sources":["../../../../src/web/WebOxyContext.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAIjD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY,EAAE,cAAc;IACtE,WAAW,EAAE,WAAW,CAAC;CAC1B;AAID,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;CACjD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,OAAO,EACP,UAAU,EACV,iBAAiB,GAClB,EAAE,mBAAmB,2CAwIrB;AAED,wBAAgB,SAAS,uBAMxB;AAED,wBAAgB,OAAO;;;;;;kBA5KP,OAAO,CAAC,IAAI,CAAC;mBACZ,OAAO,CAAC,IAAI,CAAC;;EAwL7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebOxyContext.d.ts","sourceRoot":"","sources":["../../../../src/web/WebOxyContext.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"WebOxyContext.d.ts","sourceRoot":"","sources":["../../../../src/web/WebOxyContext.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAIjD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY,EAAE,cAAc;IACtE,WAAW,EAAE,WAAW,CAAC;CAC1B;AAID,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;CACjD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,OAAO,EACP,UAAU,EACV,iBAAiB,GAClB,EAAE,mBAAmB,2CAwIrB;AAED,wBAAgB,SAAS,uBAMxB;AAED,wBAAgB,OAAO;;;;;;kBA5KP,OAAO,CAAC,IAAI,CAAC;mBACZ,OAAO,CAAC,IAAI,CAAC;;EAwL7B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oxyhq/services",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.24.0",
|
|
4
4
|
"description": "Reusable OxyHQ module to handle authentication, user management, karma system, device-based session management and more 🚀",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -13,7 +13,6 @@ import {
|
|
|
13
13
|
} from 'react';
|
|
14
14
|
import { OxyServices } from '../core';
|
|
15
15
|
import type { User } from '../models/interfaces';
|
|
16
|
-
import type { ClientSession } from '../models/session';
|
|
17
16
|
import { QueryClientProvider } from '@tanstack/react-query';
|
|
18
17
|
import { createQueryClient } from '../ui/hooks/queryClient';
|
|
19
18
|
|
|
@@ -66,57 +65,15 @@ export function WebOxyProvider({
|
|
|
66
65
|
|
|
67
66
|
const initAuth = async () => {
|
|
68
67
|
try {
|
|
69
|
-
// Try to get
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
if (sessions && sessions.length > 0) {
|
|
73
|
-
const activeSession = sessions.find((s: ClientSession) => s.isCurrent) || sessions[0];
|
|
74
|
-
|
|
75
|
-
// Try to get user info from the active session's userId
|
|
76
|
-
if (activeSession && activeSession.userId) {
|
|
77
|
-
try {
|
|
78
|
-
const userProfile = await oxyServices.getProfile(activeSession.userId);
|
|
79
|
-
if (mounted && userProfile) {
|
|
80
|
-
setUser(userProfile as User);
|
|
81
|
-
setIsLoading(false);
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
} catch (err) {
|
|
85
|
-
console.log('[WebOxy] Could not fetch user profile:', err);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
68
|
+
// Try to get current user (will use existing auth token if available)
|
|
69
|
+
const currentUser = await oxyServices.getCurrentUser();
|
|
89
70
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
try {
|
|
93
|
-
const credential = await navigator.credentials.get({
|
|
94
|
-
// @ts-expect-error - FedCM identity property is not in standard types
|
|
95
|
-
identity: {
|
|
96
|
-
providers: [{
|
|
97
|
-
configURL: `${authWebUrl || 'https://auth.oxy.so'}/fedcm.json`,
|
|
98
|
-
clientId: window.location.origin,
|
|
99
|
-
}]
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
if (credential && 'token' in credential) {
|
|
104
|
-
// Use the token to authenticate
|
|
105
|
-
const session = await oxyServices.authenticateWithToken(credential.token);
|
|
106
|
-
if (mounted && session.user) {
|
|
107
|
-
setUser(session.user);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
} catch (fedcmError) {
|
|
111
|
-
// FedCM not available or user cancelled - this is fine
|
|
112
|
-
console.log('[WebOxy] FedCM SSO not available:', fedcmError);
|
|
113
|
-
}
|
|
71
|
+
if (mounted && currentUser) {
|
|
72
|
+
setUser(currentUser);
|
|
114
73
|
}
|
|
115
74
|
} catch (err) {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
setError(err instanceof Error ? err.message : 'Failed to initialize auth');
|
|
119
|
-
}
|
|
75
|
+
// No active session - this is fine
|
|
76
|
+
console.log('[WebOxy] No active session');
|
|
120
77
|
} finally {
|
|
121
78
|
if (mounted) {
|
|
122
79
|
setIsLoading(false);
|
|
@@ -129,7 +86,7 @@ export function WebOxyProvider({
|
|
|
129
86
|
return () => {
|
|
130
87
|
mounted = false;
|
|
131
88
|
};
|
|
132
|
-
}, [oxyServices
|
|
89
|
+
}, [oxyServices]);
|
|
133
90
|
|
|
134
91
|
// Notify parent of auth state changes
|
|
135
92
|
useEffect(() => {
|
|
@@ -159,18 +116,12 @@ export function WebOxyProvider({
|
|
|
159
116
|
}
|
|
160
117
|
|
|
161
118
|
if (event.data.type === 'oxy-auth-success') {
|
|
162
|
-
const {
|
|
163
|
-
|
|
164
|
-
// Store
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
expiresAt: event.data.expiresAt || '',
|
|
169
|
-
lastActive: new Date().toISOString(),
|
|
170
|
-
userId: authUser.id,
|
|
171
|
-
isCurrent: true,
|
|
172
|
-
};
|
|
173
|
-
await oxyServices.storeSession(session);
|
|
119
|
+
const { accessToken, user: authUser } = event.data;
|
|
120
|
+
|
|
121
|
+
// Store the access token for API requests
|
|
122
|
+
if (typeof window !== 'undefined' && accessToken) {
|
|
123
|
+
localStorage.setItem('oxy-access-token', accessToken);
|
|
124
|
+
}
|
|
174
125
|
|
|
175
126
|
setUser(authUser);
|
|
176
127
|
setIsLoading(false);
|
|
@@ -200,19 +151,23 @@ export function WebOxyProvider({
|
|
|
200
151
|
setError(err instanceof Error ? err.message : 'Sign in failed');
|
|
201
152
|
setIsLoading(false);
|
|
202
153
|
}
|
|
203
|
-
}, [
|
|
154
|
+
}, [authWebUrl]);
|
|
204
155
|
|
|
205
156
|
const signOut = useCallback(async () => {
|
|
206
157
|
setError(null);
|
|
207
158
|
|
|
208
159
|
try {
|
|
209
|
-
|
|
160
|
+
// Clear stored token
|
|
161
|
+
if (typeof window !== 'undefined') {
|
|
162
|
+
localStorage.removeItem('oxy-access-token');
|
|
163
|
+
}
|
|
164
|
+
|
|
210
165
|
setUser(null);
|
|
211
166
|
} catch (err) {
|
|
212
167
|
console.error('[WebOxy] Sign out error:', err);
|
|
213
168
|
setError(err instanceof Error ? err.message : 'Sign out failed');
|
|
214
169
|
}
|
|
215
|
-
}, [
|
|
170
|
+
}, []);
|
|
216
171
|
|
|
217
172
|
const contextValue: WebOxyContextValue = {
|
|
218
173
|
user,
|