@oxyhq/services 6.10.4 → 6.10.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/README.md +27 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +10 -27
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/hooks/useWebSSO.js +7 -45
- package/lib/commonjs/ui/hooks/useWebSSO.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +10 -27
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/hooks/useWebSSO.js +7 -45
- package/lib/module/ui/hooks/useWebSSO.js.map +1 -1
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useWebSSO.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useWebSSO.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/ui/context/hooks/useAuthOperations.ts +10 -27
- package/src/ui/hooks/useWebSSO.ts +7 -46
package/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
A comprehensive TypeScript UI library for the Oxy API providing authentication, user management, and UI components for React Native and Expo applications.
|
|
4
4
|
|
|
5
|
+
**Current published version: 6.10.4**
|
|
6
|
+
|
|
5
7
|
> **For web apps (Vite, Next.js, CRA):** Use [`@oxyhq/auth`](../auth) for authentication and [`@oxyhq/core`](../core) for types and services.
|
|
6
8
|
>
|
|
7
9
|
> **For backend / Node.js:** Use [`@oxyhq/core`](../core) only.
|
|
@@ -727,10 +729,34 @@ try {
|
|
|
727
729
|
}
|
|
728
730
|
```
|
|
729
731
|
|
|
732
|
+
## Payment & Storage Query Hooks
|
|
733
|
+
|
|
734
|
+
The following React Query hooks are exported from the package root:
|
|
735
|
+
|
|
736
|
+
```typescript
|
|
737
|
+
import {
|
|
738
|
+
useUserSubscription,
|
|
739
|
+
useUserPayments,
|
|
740
|
+
useUserWallet,
|
|
741
|
+
useUserWalletTransactions,
|
|
742
|
+
useAccountStorageUsage,
|
|
743
|
+
} from '@oxyhq/services';
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
Typed returns are defined in `ui/hooks/queries/paymentTypes.ts` (`Subscription`, `Payment`, `Wallet`, `WalletTransaction`). The `payments` query namespace is whitelisted for offline persistence alongside `accounts`, `users`, `sessions`, `devices`, and `privacy`.
|
|
747
|
+
|
|
748
|
+
## Sign-In Token Planting
|
|
749
|
+
|
|
750
|
+
`useAuthOperations.performSignIn` plants the `accessToken` returned directly by `verifyChallenge` via `oxyServices.setTokens(...)`. It falls back to the bearer-protected `getTokenBySession` only when the verify response omits the token. Without this, a brand-new identity 401s on the session sync step.
|
|
751
|
+
|
|
752
|
+
## Silent SSO Run-Once Guard
|
|
753
|
+
|
|
754
|
+
`useWebSSO` contains a module-level `silentSSOAttempted` Set keyed on `origin+baseURL`. Silent FedCM sign-in fires exactly once per page load regardless of unmount/remount or StrictMode double-invoke.
|
|
755
|
+
|
|
730
756
|
## Requirements
|
|
731
757
|
|
|
732
758
|
- **React Native**: 0.76+ (for mobile components)
|
|
733
|
-
- **Expo**:
|
|
759
|
+
- **Expo**: 56+ (recommended)
|
|
734
760
|
- **TypeScript**: 4.0+ (optional but recommended)
|
|
735
761
|
|
|
736
762
|
### Peer Dependencies
|
|
@@ -140,35 +140,18 @@ const useAuthOperations = ({
|
|
|
140
140
|
logger('Offline sign-in successful');
|
|
141
141
|
}
|
|
142
142
|
} else {
|
|
143
|
-
// Online sign-in: use normal flow
|
|
144
|
-
// Verify and create session
|
|
143
|
+
// Online sign-in: use normal flow.
|
|
144
|
+
// Verify and create session. `verifyChallenge` plants the first
|
|
145
|
+
// access token (and refresh token) from the `/auth/verify` response
|
|
146
|
+
// body internally — mirroring `claimSessionByToken` — so the client is
|
|
147
|
+
// authenticated as soon as this resolves. We deliberately do NOT fall
|
|
148
|
+
// back to the bearer-protected `GET /session/token/:sessionId` (C1
|
|
149
|
+
// hardening): for a brand-new identity with no bearer yet that route
|
|
150
|
+
// 401s, which previously broke the entire new-identity onboarding
|
|
151
|
+
// flow. A token-less verify response simply leaves the client without
|
|
152
|
+
// a bearer here rather than triggering that 401.
|
|
145
153
|
sessionResponse = await oxyServices.verifyChallenge(publicKey, challenge, signature, timestamp, deviceName, deviceFingerprint);
|
|
146
154
|
|
|
147
|
-
// Plant the first access token. `/auth/verify` already returns the
|
|
148
|
-
// freshly-minted access token in its response body, so use it
|
|
149
|
-
// directly. We must NOT fall back to `GET /session/token/:sessionId`
|
|
150
|
-
// here for a brand-new sign-in: that route is bearer-protected (C1
|
|
151
|
-
// hardening) and the client has no bearer yet, so calling it without
|
|
152
|
-
// a token returns 401 "Invalid or missing authorization header" —
|
|
153
|
-
// which previously broke the entire new-identity onboarding flow.
|
|
154
|
-
// Only when the verify response somehow omits the token do we fall
|
|
155
|
-
// back, and by then `setTokens` has not run so a 401 there is a real
|
|
156
|
-
// server fault worth surfacing.
|
|
157
|
-
if (sessionResponse.accessToken) {
|
|
158
|
-
oxyServices.setTokens(sessionResponse.accessToken, sessionResponse.refreshToken ?? '');
|
|
159
|
-
} else {
|
|
160
|
-
try {
|
|
161
|
-
await oxyServices.getTokenBySession(sessionResponse.sessionId);
|
|
162
|
-
} catch (tokenError) {
|
|
163
|
-
const errorMessage = tokenError instanceof Error ? tokenError.message : String(tokenError);
|
|
164
|
-
const status = isErrorWithCodeOrStatus(tokenError) ? tokenError.status : undefined;
|
|
165
|
-
if (status === 404 || errorMessage.includes('404')) {
|
|
166
|
-
throw new Error(`Session was created but token could not be retrieved. Session ID: ${sessionResponse.sessionId.substring(0, 8)}...`);
|
|
167
|
-
}
|
|
168
|
-
throw tokenError;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
155
|
// Get full user data
|
|
173
156
|
fullUser = await oxyServices.getUserBySession(sessionResponse.sessionId);
|
|
174
157
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_core","_sessionHelpers","_errorHandlers","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","isErrorWithCodeOrStatus","error","LOGIN_ERROR_CODE","LOGOUT_ERROR_CODE","LOGOUT_ALL_ERROR_CODE","useAuthOperations","oxyServices","storage","sessions","activeSessionId","setActiveSessionId","updateSessions","saveActiveSessionId","clearSessionState","switchSession","applyLanguagePreference","onAuthStateChange","onError","loginSuccess","loginFailure","logoutStore","setAuthState","logger","sessionsRef","useRef","current","performSignIn","useCallback","publicKey","deviceFingerprintObj","DeviceManager","getDeviceFingerprint","deviceFingerprint","JSON","stringify","deviceInfo","getDeviceInfo","deviceName","getDefaultDeviceName","challenge","isOffline","challengeResponse","requestChallenge","errorMessage","Error","message","String","isNetworkError","includes","code","status","__DEV__","SignatureService","generateChallenge","signature","timestamp","signChallenge","fullUser","sessionResponse","Crypto","Promise","resolve","then","localSessionId","getRandomUUID","localDeviceId","expiresAt","Date","now","toISOString","id","username","privacySettings","sessionId","deviceId","user","offlineSession","lastActive","userId","isCurrent","merge","setItem","verifyChallenge","accessToken","setTokens","refreshToken","getTokenBySession","tokenError","undefined","substring","getUserBySession","allDeviceSessions","fetchSessionsWithFallback","fallbackDeviceId","fallbackUserId","existingSession","find","session","toString","logoutSession","logoutError","filter","signIn","isLoading","handleAuthError","defaultMessage","setAuthError","msg","logout","targetSessionId","sessionToLogout","filteredSessions","length","isInvalid","isInvalidSessionError","logoutAll","logoutAllSessions","exports"],"sourceRoot":"../../../../../src","sources":["ui/context/hooks/useAuthOperations.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","require","_core","_sessionHelpers","_errorHandlers","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","isErrorWithCodeOrStatus","error","LOGIN_ERROR_CODE","LOGOUT_ERROR_CODE","LOGOUT_ALL_ERROR_CODE","useAuthOperations","oxyServices","storage","sessions","activeSessionId","setActiveSessionId","updateSessions","saveActiveSessionId","clearSessionState","switchSession","applyLanguagePreference","onAuthStateChange","onError","loginSuccess","loginFailure","logoutStore","setAuthState","logger","sessionsRef","useRef","current","performSignIn","useCallback","publicKey","deviceFingerprintObj","DeviceManager","getDeviceFingerprint","deviceFingerprint","JSON","stringify","deviceInfo","getDeviceInfo","deviceName","getDefaultDeviceName","challenge","isOffline","challengeResponse","requestChallenge","errorMessage","Error","message","String","isNetworkError","includes","code","status","__DEV__","SignatureService","generateChallenge","signature","timestamp","signChallenge","fullUser","sessionResponse","Crypto","Promise","resolve","then","localSessionId","getRandomUUID","localDeviceId","expiresAt","Date","now","toISOString","id","username","privacySettings","sessionId","deviceId","user","offlineSession","lastActive","userId","isCurrent","merge","setItem","verifyChallenge","getUserBySession","allDeviceSessions","fetchSessionsWithFallback","fallbackDeviceId","fallbackUserId","existingSession","find","session","toString","logoutSession","logoutError","filter","signIn","isLoading","handleAuthError","defaultMessage","setAuthError","msg","logout","targetSessionId","sessionToLogout","filteredSessions","length","isInvalid","isInvalidSessionError","undefined","logoutAll","logoutAllSessions","exports"],"sourceRoot":"../../../../../src","sources":["ui/context/hooks/useAuthOperations.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -23,36 +23,6 @@ var _react = require("react");
|
|
|
23
23
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/FedCM_API
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
|
-
/**
|
|
27
|
-
* Module-level guard tracking which (origin + API) signatures have already
|
|
28
|
-
* had a silent SSO attempt this page load.
|
|
29
|
-
*
|
|
30
|
-
* A per-component `useRef` guard resets whenever the provider remounts (route
|
|
31
|
-
* churn, StrictMode double-invoke, error-boundary recovery), which previously
|
|
32
|
-
* allowed silent SSO to re-fire and — combined with a routing redirect loop —
|
|
33
|
-
* produced an accelerating `navigator.credentials.get` retry storm. Keying the
|
|
34
|
-
* guard on a stable signature instead of the component instance makes silent
|
|
35
|
-
* SSO fire EXACTLY ONCE per page load regardless of how many times the
|
|
36
|
-
* provider mounts. The set is intentionally never cleared: a fresh page load
|
|
37
|
-
* (the only thing that can change the answer) starts a fresh module scope.
|
|
38
|
-
*/
|
|
39
|
-
const silentSSOAttempted = new Set();
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Build a stable signature for the silent-SSO run-once guard. Two providers
|
|
43
|
-
* pointed at the same API from the same origin share one attempt.
|
|
44
|
-
*/
|
|
45
|
-
function ssoSignature(oxyServices) {
|
|
46
|
-
const origin = typeof window !== 'undefined' ? window.location.origin : 'no-origin';
|
|
47
|
-
let baseURL = '';
|
|
48
|
-
try {
|
|
49
|
-
baseURL = oxyServices.getBaseURL?.() ?? '';
|
|
50
|
-
} catch {
|
|
51
|
-
baseURL = '';
|
|
52
|
-
}
|
|
53
|
-
return `${origin}|${baseURL}`;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
26
|
/**
|
|
57
27
|
* Check if we're running in a web browser environment (not React Native)
|
|
58
28
|
*/
|
|
@@ -170,12 +140,12 @@ function useWebSSO({
|
|
|
170
140
|
|
|
171
141
|
// Auto-check SSO on mount (web only, FedCM only, not on auth domain).
|
|
172
142
|
//
|
|
173
|
-
//
|
|
174
|
-
//
|
|
175
|
-
//
|
|
176
|
-
//
|
|
177
|
-
//
|
|
178
|
-
//
|
|
143
|
+
// `hasCheckedRef` is a cheap per-instance fast-path so effect re-runs (from
|
|
144
|
+
// changing deps) within one mount never re-fire. The page-load run-once
|
|
145
|
+
// guarantee — silent SSO invoking `navigator.credentials.get` AT MOST ONCE
|
|
146
|
+
// per page load across remounts / StrictMode / multiple consumers — lives in
|
|
147
|
+
// `@oxyhq/core`'s `silentSignInWithFedCM`, which memoizes the first silent
|
|
148
|
+
// attempt's result for this origin + API. The hook therefore calls it freely.
|
|
179
149
|
(0, _react.useEffect)(() => {
|
|
180
150
|
if (!enabled || !isWebBrowser() || hasCheckedRef.current || isIdentityProvider(authWebUrl)) {
|
|
181
151
|
if (isIdentityProvider(authWebUrl)) {
|
|
@@ -183,21 +153,13 @@ function useWebSSO({
|
|
|
183
153
|
}
|
|
184
154
|
return;
|
|
185
155
|
}
|
|
186
|
-
const signature = ssoSignature(oxyServices);
|
|
187
|
-
if (silentSSOAttempted.has(signature)) {
|
|
188
|
-
// Already attempted this page load (e.g. before a remount) — do not
|
|
189
|
-
// re-fire. Mark the local fast-path too so subsequent re-renders skip.
|
|
190
|
-
hasCheckedRef.current = true;
|
|
191
|
-
return;
|
|
192
|
-
}
|
|
193
156
|
hasCheckedRef.current = true;
|
|
194
|
-
silentSSOAttempted.add(signature);
|
|
195
157
|
if (fedCMSupported) {
|
|
196
158
|
checkSSO();
|
|
197
159
|
} else {
|
|
198
160
|
onSSOUnavailable?.();
|
|
199
161
|
}
|
|
200
|
-
}, [enabled, checkSSO, fedCMSupported, onSSOUnavailable,
|
|
162
|
+
}, [enabled, checkSSO, fedCMSupported, onSSOUnavailable, authWebUrl]);
|
|
201
163
|
return {
|
|
202
164
|
checkSSO,
|
|
203
165
|
signInWithFedCM,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","
|
|
1
|
+
{"version":3,"names":["_react","require","isWebBrowser","window","document","documentElement","isIdentityProvider","authWebUrl","hostname","location","idpHostname","URL","useWebSSO","oxyServices","onSessionFound","onSSOUnavailable","onError","enabled","isCheckingRef","useRef","hasCheckedRef","fedCMSupported","isFedCMSupported","config","checkSSO","useCallback","current","session","silentSignInWithFedCM","error","Error","String","signInWithFedCM","useEffect","isChecking"],"sourceRoot":"../../../../src","sources":["ui/hooks/useWebSSO.ts"],"mappings":";;;;;;;AAiBA,IAAAA,MAAA,GAAAC,OAAA;AAjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAyBA;AACA;AACA;AACA,SAASC,YAAYA,CAAA,EAAY;EAC/B,OAAO,OAAOC,MAAM,KAAK,WAAW,IAC7B,OAAOC,QAAQ,KAAK,WAAW,IAC/B,OAAOA,QAAQ,CAACC,eAAe,KAAK,WAAW;AACxD;;AAEA;AACA;AACA;AACA;AACA,SAASC,kBAAkBA,CAACC,UAAmB,EAAW;EACxD,IAAI,CAACL,YAAY,CAAC,CAAC,EAAE,OAAO,KAAK;EACjC,MAAMM,QAAQ,GAAGL,MAAM,CAACM,QAAQ,CAACD,QAAQ;EACzC,IAAIE,WAAW,GAAG,aAAa;EAC/B,IAAIH,UAAU,EAAE;IACd,IAAI;MAAEG,WAAW,GAAG,IAAIC,GAAG,CAACJ,UAAU,CAAC,CAACC,QAAQ;IAAE,CAAC,CAAC,MAAM,CAAE;EAC9D;EACA,OAAOA,QAAQ,KAAKE,WAAW;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,SAASA,CAAC;EACxBC,WAAW;EACXC,cAAc;EACdC,gBAAgB;EAChBC,OAAO;EACPC,OAAO,GAAG;AACM,CAAC,EAAmB;EACpC,MAAMC,aAAa,GAAG,IAAAC,aAAM,EAAC,KAAK,CAAC;EACnC,MAAMC,aAAa,GAAG,IAAAD,aAAM,EAAC,KAAK,CAAC;;EAEnC;EACA,MAAME,cAAc,GAAGnB,YAAY,CAAC,CAAC,IAAIW,WAAW,CAACS,gBAAgB,GAAG,CAAC;EACzE,MAAMf,UAAU,GAAGM,WAAW,CAACU,MAAM,EAAEhB,UAAU;EAEjD,MAAMiB,QAAQ,GAAG,IAAAC,kBAAW,EAAC,YAAkD;IAC7E,IAAI,CAACvB,YAAY,CAAC,CAAC,IAAIgB,aAAa,CAACQ,OAAO,EAAE;MAC5C,OAAO,IAAI;IACb;;IAEA;IACA,IAAIpB,kBAAkB,CAACC,UAAU,CAAC,EAAE;MAClCQ,gBAAgB,GAAG,CAAC;MACpB,OAAO,IAAI;IACb;;IAEA;IACA,IAAI,CAACM,cAAc,EAAE;MACnBN,gBAAgB,GAAG,CAAC;MACpB,OAAO,IAAI;IACb;IAEAG,aAAa,CAACQ,OAAO,GAAG,IAAI;IAE5B,IAAI;MACF,MAAMC,OAAO,GAAG,MAAMd,WAAW,CAACe,qBAAqB,GAAG,CAAC;MAE3D,IAAID,OAAO,EAAE;QACX,MAAMb,cAAc,CAACa,OAAO,CAAC;QAC7B,OAAOA,OAAO;MAChB;MAEAZ,gBAAgB,GAAG,CAAC;MACpB,OAAO,IAAI;IACb,CAAC,CAAC,OAAOc,KAAK,EAAE;MACdd,gBAAgB,GAAG,CAAC;MACpBC,OAAO,GAAGa,KAAK,YAAYC,KAAK,GAAGD,KAAK,GAAG,IAAIC,KAAK,CAACC,MAAM,CAACF,KAAK,CAAC,CAAC,CAAC;MACpE,OAAO,IAAI;IACb,CAAC,SAAS;MACRX,aAAa,CAACQ,OAAO,GAAG,KAAK;IAC/B;EACF,CAAC,EAAE,CAACb,WAAW,EAAEC,cAAc,EAAEC,gBAAgB,EAAEC,OAAO,EAAEK,cAAc,EAAEd,UAAU,CAAC,CAAC;;EAExF;AACF;AACA;AACA;AACA;EACE,MAAMyB,eAAe,GAAG,IAAAP,kBAAW,EAAC,YAAkD;IACpF,IAAI,CAACvB,YAAY,CAAC,CAAC,IAAIgB,aAAa,CAACQ,OAAO,EAAE;MAC5C,OAAO,IAAI;IACb;IAEA,IAAI,CAACL,cAAc,EAAE;MACnBL,OAAO,GAAG,IAAIc,KAAK,CAAC,wCAAwC,CAAC,CAAC;MAC9D,OAAO,IAAI;IACb;IAEAZ,aAAa,CAACQ,OAAO,GAAG,IAAI;IAE5B,IAAI;MACF,MAAMC,OAAO,GAAG,MAAMd,WAAW,CAACmB,eAAe,GAAG,CAAC;MAErD,IAAIL,OAAO,EAAE;QACX,MAAMb,cAAc,CAACa,OAAO,CAAC;QAC7B,OAAOA,OAAO;MAChB;MAEA,OAAO,IAAI;IACb,CAAC,CAAC,OAAOE,KAAK,EAAE;MACdb,OAAO,GAAGa,KAAK,YAAYC,KAAK,GAAGD,KAAK,GAAG,IAAIC,KAAK,CAACC,MAAM,CAACF,KAAK,CAAC,CAAC,CAAC;MACpE,OAAO,IAAI;IACb,CAAC,SAAS;MACRX,aAAa,CAACQ,OAAO,GAAG,KAAK;IAC/B;EACF,CAAC,EAAE,CAACb,WAAW,EAAEC,cAAc,EAAEE,OAAO,EAAEK,cAAc,CAAC,CAAC;;EAE1D;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAAY,gBAAS,EAAC,MAAM;IACd,IAAI,CAAChB,OAAO,IAAI,CAACf,YAAY,CAAC,CAAC,IAAIkB,aAAa,CAACM,OAAO,IAAIpB,kBAAkB,CAACC,UAAU,CAAC,EAAE;MAC1F,IAAID,kBAAkB,CAACC,UAAU,CAAC,EAAE;QAClCQ,gBAAgB,GAAG,CAAC;MACtB;MACA;IACF;IAEAK,aAAa,CAACM,OAAO,GAAG,IAAI;IAE5B,IAAIL,cAAc,EAAE;MAClBG,QAAQ,CAAC,CAAC;IACZ,CAAC,MAAM;MACLT,gBAAgB,GAAG,CAAC;IACtB;EACF,CAAC,EAAE,CAACE,OAAO,EAAEO,QAAQ,EAAEH,cAAc,EAAEN,gBAAgB,EAAER,UAAU,CAAC,CAAC;EAErE,OAAO;IACLiB,QAAQ;IACRQ,eAAe;IACfE,UAAU,EAAEhB,aAAa,CAACQ,OAAO;IACjCJ,gBAAgB,EAAED;EACpB,CAAC;AACH","ignoreList":[]}
|
|
@@ -137,35 +137,18 @@ export const useAuthOperations = ({
|
|
|
137
137
|
logger('Offline sign-in successful');
|
|
138
138
|
}
|
|
139
139
|
} else {
|
|
140
|
-
// Online sign-in: use normal flow
|
|
141
|
-
// Verify and create session
|
|
140
|
+
// Online sign-in: use normal flow.
|
|
141
|
+
// Verify and create session. `verifyChallenge` plants the first
|
|
142
|
+
// access token (and refresh token) from the `/auth/verify` response
|
|
143
|
+
// body internally — mirroring `claimSessionByToken` — so the client is
|
|
144
|
+
// authenticated as soon as this resolves. We deliberately do NOT fall
|
|
145
|
+
// back to the bearer-protected `GET /session/token/:sessionId` (C1
|
|
146
|
+
// hardening): for a brand-new identity with no bearer yet that route
|
|
147
|
+
// 401s, which previously broke the entire new-identity onboarding
|
|
148
|
+
// flow. A token-less verify response simply leaves the client without
|
|
149
|
+
// a bearer here rather than triggering that 401.
|
|
142
150
|
sessionResponse = await oxyServices.verifyChallenge(publicKey, challenge, signature, timestamp, deviceName, deviceFingerprint);
|
|
143
151
|
|
|
144
|
-
// Plant the first access token. `/auth/verify` already returns the
|
|
145
|
-
// freshly-minted access token in its response body, so use it
|
|
146
|
-
// directly. We must NOT fall back to `GET /session/token/:sessionId`
|
|
147
|
-
// here for a brand-new sign-in: that route is bearer-protected (C1
|
|
148
|
-
// hardening) and the client has no bearer yet, so calling it without
|
|
149
|
-
// a token returns 401 "Invalid or missing authorization header" —
|
|
150
|
-
// which previously broke the entire new-identity onboarding flow.
|
|
151
|
-
// Only when the verify response somehow omits the token do we fall
|
|
152
|
-
// back, and by then `setTokens` has not run so a 401 there is a real
|
|
153
|
-
// server fault worth surfacing.
|
|
154
|
-
if (sessionResponse.accessToken) {
|
|
155
|
-
oxyServices.setTokens(sessionResponse.accessToken, sessionResponse.refreshToken ?? '');
|
|
156
|
-
} else {
|
|
157
|
-
try {
|
|
158
|
-
await oxyServices.getTokenBySession(sessionResponse.sessionId);
|
|
159
|
-
} catch (tokenError) {
|
|
160
|
-
const errorMessage = tokenError instanceof Error ? tokenError.message : String(tokenError);
|
|
161
|
-
const status = isErrorWithCodeOrStatus(tokenError) ? tokenError.status : undefined;
|
|
162
|
-
if (status === 404 || errorMessage.includes('404')) {
|
|
163
|
-
throw new Error(`Session was created but token could not be retrieved. Session ID: ${sessionResponse.sessionId.substring(0, 8)}...`);
|
|
164
|
-
}
|
|
165
|
-
throw tokenError;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
|
|
169
152
|
// Get full user data
|
|
170
153
|
fullUser = await oxyServices.getUserBySession(sessionResponse.sessionId);
|
|
171
154
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useRef","DeviceManager","fetchSessionsWithFallback","handleAuthError","isInvalidSessionError","SignatureService","isErrorWithCodeOrStatus","error","LOGIN_ERROR_CODE","LOGOUT_ERROR_CODE","LOGOUT_ALL_ERROR_CODE","useAuthOperations","oxyServices","storage","sessions","activeSessionId","setActiveSessionId","updateSessions","saveActiveSessionId","clearSessionState","switchSession","applyLanguagePreference","onAuthStateChange","onError","loginSuccess","loginFailure","logoutStore","setAuthState","logger","sessionsRef","current","performSignIn","publicKey","deviceFingerprintObj","getDeviceFingerprint","deviceFingerprint","JSON","stringify","deviceInfo","getDeviceInfo","deviceName","getDefaultDeviceName","challenge","isOffline","challengeResponse","requestChallenge","errorMessage","Error","message","String","isNetworkError","includes","code","status","__DEV__","generateChallenge","signature","timestamp","signChallenge","fullUser","sessionResponse","Crypto","localSessionId","getRandomUUID","localDeviceId","expiresAt","Date","now","toISOString","id","username","privacySettings","sessionId","deviceId","user","offlineSession","lastActive","userId","isCurrent","merge","setItem","verifyChallenge","
|
|
1
|
+
{"version":3,"names":["useCallback","useRef","DeviceManager","fetchSessionsWithFallback","handleAuthError","isInvalidSessionError","SignatureService","isErrorWithCodeOrStatus","error","LOGIN_ERROR_CODE","LOGOUT_ERROR_CODE","LOGOUT_ALL_ERROR_CODE","useAuthOperations","oxyServices","storage","sessions","activeSessionId","setActiveSessionId","updateSessions","saveActiveSessionId","clearSessionState","switchSession","applyLanguagePreference","onAuthStateChange","onError","loginSuccess","loginFailure","logoutStore","setAuthState","logger","sessionsRef","current","performSignIn","publicKey","deviceFingerprintObj","getDeviceFingerprint","deviceFingerprint","JSON","stringify","deviceInfo","getDeviceInfo","deviceName","getDefaultDeviceName","challenge","isOffline","challengeResponse","requestChallenge","errorMessage","Error","message","String","isNetworkError","includes","code","status","__DEV__","generateChallenge","signature","timestamp","signChallenge","fullUser","sessionResponse","Crypto","localSessionId","getRandomUUID","localDeviceId","expiresAt","Date","now","toISOString","id","username","privacySettings","sessionId","deviceId","user","offlineSession","lastActive","userId","isCurrent","merge","setItem","verifyChallenge","getUserBySession","allDeviceSessions","fallbackDeviceId","fallbackUserId","existingSession","find","session","toString","logoutSession","logoutError","filter","signIn","isLoading","defaultMessage","setAuthError","msg","logout","targetSessionId","sessionToLogout","filteredSessions","length","isInvalid","undefined","logoutAll","logoutAllSessions"],"sourceRoot":"../../../../../src","sources":["ui/context/hooks/useAuthOperations.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -18,36 +18,6 @@
|
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
import { useEffect, useRef, useCallback } from 'react';
|
|
21
|
-
/**
|
|
22
|
-
* Module-level guard tracking which (origin + API) signatures have already
|
|
23
|
-
* had a silent SSO attempt this page load.
|
|
24
|
-
*
|
|
25
|
-
* A per-component `useRef` guard resets whenever the provider remounts (route
|
|
26
|
-
* churn, StrictMode double-invoke, error-boundary recovery), which previously
|
|
27
|
-
* allowed silent SSO to re-fire and — combined with a routing redirect loop —
|
|
28
|
-
* produced an accelerating `navigator.credentials.get` retry storm. Keying the
|
|
29
|
-
* guard on a stable signature instead of the component instance makes silent
|
|
30
|
-
* SSO fire EXACTLY ONCE per page load regardless of how many times the
|
|
31
|
-
* provider mounts. The set is intentionally never cleared: a fresh page load
|
|
32
|
-
* (the only thing that can change the answer) starts a fresh module scope.
|
|
33
|
-
*/
|
|
34
|
-
const silentSSOAttempted = new Set();
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Build a stable signature for the silent-SSO run-once guard. Two providers
|
|
38
|
-
* pointed at the same API from the same origin share one attempt.
|
|
39
|
-
*/
|
|
40
|
-
function ssoSignature(oxyServices) {
|
|
41
|
-
const origin = typeof window !== 'undefined' ? window.location.origin : 'no-origin';
|
|
42
|
-
let baseURL = '';
|
|
43
|
-
try {
|
|
44
|
-
baseURL = oxyServices.getBaseURL?.() ?? '';
|
|
45
|
-
} catch {
|
|
46
|
-
baseURL = '';
|
|
47
|
-
}
|
|
48
|
-
return `${origin}|${baseURL}`;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
21
|
/**
|
|
52
22
|
* Check if we're running in a web browser environment (not React Native)
|
|
53
23
|
*/
|
|
@@ -165,12 +135,12 @@ export function useWebSSO({
|
|
|
165
135
|
|
|
166
136
|
// Auto-check SSO on mount (web only, FedCM only, not on auth domain).
|
|
167
137
|
//
|
|
168
|
-
//
|
|
169
|
-
//
|
|
170
|
-
//
|
|
171
|
-
//
|
|
172
|
-
//
|
|
173
|
-
//
|
|
138
|
+
// `hasCheckedRef` is a cheap per-instance fast-path so effect re-runs (from
|
|
139
|
+
// changing deps) within one mount never re-fire. The page-load run-once
|
|
140
|
+
// guarantee — silent SSO invoking `navigator.credentials.get` AT MOST ONCE
|
|
141
|
+
// per page load across remounts / StrictMode / multiple consumers — lives in
|
|
142
|
+
// `@oxyhq/core`'s `silentSignInWithFedCM`, which memoizes the first silent
|
|
143
|
+
// attempt's result for this origin + API. The hook therefore calls it freely.
|
|
174
144
|
useEffect(() => {
|
|
175
145
|
if (!enabled || !isWebBrowser() || hasCheckedRef.current || isIdentityProvider(authWebUrl)) {
|
|
176
146
|
if (isIdentityProvider(authWebUrl)) {
|
|
@@ -178,21 +148,13 @@ export function useWebSSO({
|
|
|
178
148
|
}
|
|
179
149
|
return;
|
|
180
150
|
}
|
|
181
|
-
const signature = ssoSignature(oxyServices);
|
|
182
|
-
if (silentSSOAttempted.has(signature)) {
|
|
183
|
-
// Already attempted this page load (e.g. before a remount) — do not
|
|
184
|
-
// re-fire. Mark the local fast-path too so subsequent re-renders skip.
|
|
185
|
-
hasCheckedRef.current = true;
|
|
186
|
-
return;
|
|
187
|
-
}
|
|
188
151
|
hasCheckedRef.current = true;
|
|
189
|
-
silentSSOAttempted.add(signature);
|
|
190
152
|
if (fedCMSupported) {
|
|
191
153
|
checkSSO();
|
|
192
154
|
} else {
|
|
193
155
|
onSSOUnavailable?.();
|
|
194
156
|
}
|
|
195
|
-
}, [enabled, checkSSO, fedCMSupported, onSSOUnavailable,
|
|
157
|
+
}, [enabled, checkSSO, fedCMSupported, onSSOUnavailable, authWebUrl]);
|
|
196
158
|
return {
|
|
197
159
|
checkSSO,
|
|
198
160
|
signInWithFedCM,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","useCallback","
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","useCallback","isWebBrowser","window","document","documentElement","isIdentityProvider","authWebUrl","hostname","location","idpHostname","URL","useWebSSO","oxyServices","onSessionFound","onSSOUnavailable","onError","enabled","isCheckingRef","hasCheckedRef","fedCMSupported","isFedCMSupported","config","checkSSO","current","session","silentSignInWithFedCM","error","Error","String","signInWithFedCM","isChecking"],"sourceRoot":"../../../../src","sources":["ui/hooks/useWebSSO.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuthOperations.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/context/hooks/useAuthOperations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,aAAa,CAAC;AAIvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQ/C,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,cAAc,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACnF,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,uBAAuB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IAClD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,uBAAuB;IACtC,uCAAuC;IACvC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,kCAAkC;IAClC,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,+BAA+B;IAC/B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAMD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,qQAkB/B,wBAAwB,KAAG,
|
|
1
|
+
{"version":3,"file":"useAuthOperations.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/context/hooks/useAuthOperations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,aAAa,CAAC;AAIvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQ/C,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,cAAc,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACnF,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,uBAAuB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IAClD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,uBAAuB;IACtC,uCAAuC;IACvC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,kCAAkC;IAClC,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,+BAA+B;IAC/B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAMD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,qQAkB/B,wBAAwB,KAAG,uBAiT7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWebSSO.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useWebSSO.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,UAAU,gBAAgB;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IACrD,2DAA2D;IAC3D,eAAe,EAAE,MAAM,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAC5D,uCAAuC;IACvC,UAAU,EAAE,OAAO,CAAC;IACpB,iDAAiD;IACjD,gBAAgB,EAAE,OAAO,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"useWebSSO.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useWebSSO.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,UAAU,gBAAgB;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IACrD,2DAA2D;IAC3D,eAAe,EAAE,MAAM,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAC5D,uCAAuC;IACvC,UAAU,EAAE,OAAO,CAAC;IACpB,iDAAiD;IACjD,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,iBAAS,YAAY,IAAI,OAAO,CAI/B;AAgBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,EACxB,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,OAAc,GACf,EAAE,gBAAgB,GAAG,eAAe,CA+GpC;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuthOperations.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/context/hooks/useAuthOperations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,aAAa,CAAC;AAIvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQ/C,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,cAAc,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACnF,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,uBAAuB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IAClD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,uBAAuB;IACtC,uCAAuC;IACvC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,kCAAkC;IAClC,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,+BAA+B;IAC/B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAMD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,qQAkB/B,wBAAwB,KAAG,
|
|
1
|
+
{"version":3,"file":"useAuthOperations.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/context/hooks/useAuthOperations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,aAAa,CAAC;AAIvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQ/C,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,cAAc,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACnF,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,uBAAuB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpC,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IAClD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,uBAAuB;IACtC,uCAAuC;IACvC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,kCAAkC;IAClC,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,+BAA+B;IAC/B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAMD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,qQAkB/B,wBAAwB,KAAG,uBAiT7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWebSSO.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useWebSSO.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,UAAU,gBAAgB;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IACrD,2DAA2D;IAC3D,eAAe,EAAE,MAAM,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAC5D,uCAAuC;IACvC,UAAU,EAAE,OAAO,CAAC;IACpB,iDAAiD;IACjD,gBAAgB,EAAE,OAAO,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"useWebSSO.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useWebSSO.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,UAAU,gBAAgB;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IACrD,2DAA2D;IAC3D,eAAe,EAAE,MAAM,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAC5D,uCAAuC;IACvC,UAAU,EAAE,OAAO,CAAC;IACpB,iDAAiD;IACjD,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,iBAAS,YAAY,IAAI,OAAO,CAI/B;AAgBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,EACxB,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,OAAc,GACf,EAAE,gBAAgB,GAAG,eAAe,CA+GpC;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -178,8 +178,16 @@ export const useAuthOperations = ({
|
|
|
178
178
|
logger('Offline sign-in successful');
|
|
179
179
|
}
|
|
180
180
|
} else {
|
|
181
|
-
// Online sign-in: use normal flow
|
|
182
|
-
// Verify and create session
|
|
181
|
+
// Online sign-in: use normal flow.
|
|
182
|
+
// Verify and create session. `verifyChallenge` plants the first
|
|
183
|
+
// access token (and refresh token) from the `/auth/verify` response
|
|
184
|
+
// body internally — mirroring `claimSessionByToken` — so the client is
|
|
185
|
+
// authenticated as soon as this resolves. We deliberately do NOT fall
|
|
186
|
+
// back to the bearer-protected `GET /session/token/:sessionId` (C1
|
|
187
|
+
// hardening): for a brand-new identity with no bearer yet that route
|
|
188
|
+
// 401s, which previously broke the entire new-identity onboarding
|
|
189
|
+
// flow. A token-less verify response simply leaves the client without
|
|
190
|
+
// a bearer here rather than triggering that 401.
|
|
183
191
|
sessionResponse = await oxyServices.verifyChallenge(
|
|
184
192
|
publicKey,
|
|
185
193
|
challenge,
|
|
@@ -189,31 +197,6 @@ export const useAuthOperations = ({
|
|
|
189
197
|
deviceFingerprint,
|
|
190
198
|
);
|
|
191
199
|
|
|
192
|
-
// Plant the first access token. `/auth/verify` already returns the
|
|
193
|
-
// freshly-minted access token in its response body, so use it
|
|
194
|
-
// directly. We must NOT fall back to `GET /session/token/:sessionId`
|
|
195
|
-
// here for a brand-new sign-in: that route is bearer-protected (C1
|
|
196
|
-
// hardening) and the client has no bearer yet, so calling it without
|
|
197
|
-
// a token returns 401 "Invalid or missing authorization header" —
|
|
198
|
-
// which previously broke the entire new-identity onboarding flow.
|
|
199
|
-
// Only when the verify response somehow omits the token do we fall
|
|
200
|
-
// back, and by then `setTokens` has not run so a 401 there is a real
|
|
201
|
-
// server fault worth surfacing.
|
|
202
|
-
if (sessionResponse.accessToken) {
|
|
203
|
-
oxyServices.setTokens(sessionResponse.accessToken, sessionResponse.refreshToken ?? '');
|
|
204
|
-
} else {
|
|
205
|
-
try {
|
|
206
|
-
await oxyServices.getTokenBySession(sessionResponse.sessionId);
|
|
207
|
-
} catch (tokenError: unknown) {
|
|
208
|
-
const errorMessage = tokenError instanceof Error ? tokenError.message : String(tokenError);
|
|
209
|
-
const status = isErrorWithCodeOrStatus(tokenError) ? tokenError.status : undefined;
|
|
210
|
-
if (status === 404 || errorMessage.includes('404')) {
|
|
211
|
-
throw new Error(`Session was created but token could not be retrieved. Session ID: ${sessionResponse.sessionId.substring(0, 8)}...`);
|
|
212
|
-
}
|
|
213
|
-
throw tokenError;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
|
|
217
200
|
// Get full user data
|
|
218
201
|
fullUser = await oxyServices.getUserBySession(sessionResponse.sessionId);
|
|
219
202
|
|
|
@@ -38,36 +38,6 @@ interface UseWebSSOResult {
|
|
|
38
38
|
isFedCMSupported: boolean;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
/**
|
|
42
|
-
* Module-level guard tracking which (origin + API) signatures have already
|
|
43
|
-
* had a silent SSO attempt this page load.
|
|
44
|
-
*
|
|
45
|
-
* A per-component `useRef` guard resets whenever the provider remounts (route
|
|
46
|
-
* churn, StrictMode double-invoke, error-boundary recovery), which previously
|
|
47
|
-
* allowed silent SSO to re-fire and — combined with a routing redirect loop —
|
|
48
|
-
* produced an accelerating `navigator.credentials.get` retry storm. Keying the
|
|
49
|
-
* guard on a stable signature instead of the component instance makes silent
|
|
50
|
-
* SSO fire EXACTLY ONCE per page load regardless of how many times the
|
|
51
|
-
* provider mounts. The set is intentionally never cleared: a fresh page load
|
|
52
|
-
* (the only thing that can change the answer) starts a fresh module scope.
|
|
53
|
-
*/
|
|
54
|
-
const silentSSOAttempted = new Set<string>();
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Build a stable signature for the silent-SSO run-once guard. Two providers
|
|
58
|
-
* pointed at the same API from the same origin share one attempt.
|
|
59
|
-
*/
|
|
60
|
-
function ssoSignature(oxyServices: OxyServices): string {
|
|
61
|
-
const origin = typeof window !== 'undefined' ? window.location.origin : 'no-origin';
|
|
62
|
-
let baseURL = '';
|
|
63
|
-
try {
|
|
64
|
-
baseURL = oxyServices.getBaseURL?.() ?? '';
|
|
65
|
-
} catch {
|
|
66
|
-
baseURL = '';
|
|
67
|
-
}
|
|
68
|
-
return `${origin}|${baseURL}`;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
41
|
/**
|
|
72
42
|
* Check if we're running in a web browser environment (not React Native)
|
|
73
43
|
*/
|
|
@@ -195,12 +165,12 @@ export function useWebSSO({
|
|
|
195
165
|
|
|
196
166
|
// Auto-check SSO on mount (web only, FedCM only, not on auth domain).
|
|
197
167
|
//
|
|
198
|
-
//
|
|
199
|
-
//
|
|
200
|
-
//
|
|
201
|
-
//
|
|
202
|
-
//
|
|
203
|
-
//
|
|
168
|
+
// `hasCheckedRef` is a cheap per-instance fast-path so effect re-runs (from
|
|
169
|
+
// changing deps) within one mount never re-fire. The page-load run-once
|
|
170
|
+
// guarantee — silent SSO invoking `navigator.credentials.get` AT MOST ONCE
|
|
171
|
+
// per page load across remounts / StrictMode / multiple consumers — lives in
|
|
172
|
+
// `@oxyhq/core`'s `silentSignInWithFedCM`, which memoizes the first silent
|
|
173
|
+
// attempt's result for this origin + API. The hook therefore calls it freely.
|
|
204
174
|
useEffect(() => {
|
|
205
175
|
if (!enabled || !isWebBrowser() || hasCheckedRef.current || isIdentityProvider(authWebUrl)) {
|
|
206
176
|
if (isIdentityProvider(authWebUrl)) {
|
|
@@ -209,23 +179,14 @@ export function useWebSSO({
|
|
|
209
179
|
return;
|
|
210
180
|
}
|
|
211
181
|
|
|
212
|
-
const signature = ssoSignature(oxyServices);
|
|
213
|
-
if (silentSSOAttempted.has(signature)) {
|
|
214
|
-
// Already attempted this page load (e.g. before a remount) — do not
|
|
215
|
-
// re-fire. Mark the local fast-path too so subsequent re-renders skip.
|
|
216
|
-
hasCheckedRef.current = true;
|
|
217
|
-
return;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
182
|
hasCheckedRef.current = true;
|
|
221
|
-
silentSSOAttempted.add(signature);
|
|
222
183
|
|
|
223
184
|
if (fedCMSupported) {
|
|
224
185
|
checkSSO();
|
|
225
186
|
} else {
|
|
226
187
|
onSSOUnavailable?.();
|
|
227
188
|
}
|
|
228
|
-
}, [enabled, checkSSO, fedCMSupported, onSSOUnavailable,
|
|
189
|
+
}, [enabled, checkSSO, fedCMSupported, onSSOUnavailable, authWebUrl]);
|
|
229
190
|
|
|
230
191
|
return {
|
|
231
192
|
checkSSO,
|