@oxy.so/services 11.0.0 → 11.1.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/ui/boot/runProviderColdBoot.js +14 -1
- package/lib/commonjs/ui/boot/runProviderColdBoot.js.map +1 -1
- package/lib/commonjs/ui/components/OxySignInButton.js +25 -7
- package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +198 -41
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/context/commitSessionFlow.js +5 -0
- package/lib/commonjs/ui/context/commitSessionFlow.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +56 -9
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/context/isolatedOAuthSession.js +52 -0
- package/lib/commonjs/ui/context/isolatedOAuthSession.js.map +1 -0
- package/lib/commonjs/ui/context/useOxyAccountGraph.js +7 -5
- package/lib/commonjs/ui/context/useOxyAccountGraph.js.map +1 -1
- package/lib/commonjs/ui/hooks/useAuth.js +7 -3
- package/lib/commonjs/ui/hooks/useAuth.js.map +1 -1
- package/lib/commonjs/ui/oauth/applicationSessionLane.js +32 -0
- package/lib/commonjs/ui/oauth/applicationSessionLane.js.map +1 -0
- package/lib/commonjs/ui/oauth/completeOAuthCode.js +4 -2
- package/lib/commonjs/ui/oauth/completeOAuthCode.js.map +1 -1
- package/lib/commonjs/ui/oauth/nativeAuthTransport.js +119 -0
- package/lib/commonjs/ui/oauth/nativeAuthTransport.js.map +1 -0
- package/lib/commonjs/ui/session/createSessionClient.js +14 -2
- package/lib/commonjs/ui/session/createSessionClient.js.map +1 -1
- package/lib/commonjs/ui/session/deviceCredentialTracker.js +8 -0
- package/lib/commonjs/ui/session/deviceCredentialTracker.js.map +1 -1
- package/lib/module/ui/boot/runProviderColdBoot.js +14 -1
- package/lib/module/ui/boot/runProviderColdBoot.js.map +1 -1
- package/lib/module/ui/components/OxySignInButton.js +25 -7
- package/lib/module/ui/components/OxySignInButton.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +200 -43
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/context/commitSessionFlow.js +5 -0
- package/lib/module/ui/context/commitSessionFlow.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +56 -9
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/context/isolatedOAuthSession.js +44 -0
- package/lib/module/ui/context/isolatedOAuthSession.js.map +1 -0
- package/lib/module/ui/context/useOxyAccountGraph.js +7 -5
- package/lib/module/ui/context/useOxyAccountGraph.js.map +1 -1
- package/lib/module/ui/hooks/useAuth.js +7 -3
- package/lib/module/ui/hooks/useAuth.js.map +1 -1
- package/lib/module/ui/oauth/applicationSessionLane.js +26 -0
- package/lib/module/ui/oauth/applicationSessionLane.js.map +1 -0
- package/lib/module/ui/oauth/completeOAuthCode.js +4 -2
- package/lib/module/ui/oauth/completeOAuthCode.js.map +1 -1
- package/lib/module/ui/oauth/nativeAuthTransport.js +115 -0
- package/lib/module/ui/oauth/nativeAuthTransport.js.map +1 -0
- package/lib/module/ui/session/createSessionClient.js +14 -2
- package/lib/module/ui/session/createSessionClient.js.map +1 -1
- package/lib/module/ui/session/deviceCredentialTracker.js +8 -0
- package/lib/module/ui/session/deviceCredentialTracker.js.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +1 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts +7 -0
- package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts +2 -0
- package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +3 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/commitSessionFlow.d.ts +2 -0
- package/lib/typescript/commonjs/ui/context/commitSessionFlow.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts +3 -2
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/isolatedOAuthSession.d.ts +19 -0
- package/lib/typescript/commonjs/ui/context/isolatedOAuthSession.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts +3 -0
- package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts +2 -1
- package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/oauth/applicationSessionLane.d.ts +6 -0
- package/lib/typescript/commonjs/ui/oauth/applicationSessionLane.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/oauth/completeOAuthCode.d.ts +2 -2
- package/lib/typescript/commonjs/ui/oauth/nativeAuthTransport.d.ts +28 -0
- package/lib/typescript/commonjs/ui/oauth/nativeAuthTransport.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/session/createSessionClient.d.ts +1 -1
- package/lib/typescript/commonjs/ui/session/createSessionClient.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/session/deviceCredentialTracker.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +1 -0
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts +7 -0
- package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxySignInButton.d.ts +2 -0
- package/lib/typescript/module/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts +3 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/commitSessionFlow.d.ts +2 -0
- package/lib/typescript/module/ui/context/commitSessionFlow.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts +3 -2
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/isolatedOAuthSession.d.ts +19 -0
- package/lib/typescript/module/ui/context/isolatedOAuthSession.d.ts.map +1 -0
- package/lib/typescript/module/ui/context/oxyContextTypes.d.ts +3 -0
- package/lib/typescript/module/ui/context/oxyContextTypes.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts +2 -1
- package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/module/ui/oauth/applicationSessionLane.d.ts +6 -0
- package/lib/typescript/module/ui/oauth/applicationSessionLane.d.ts.map +1 -0
- package/lib/typescript/module/ui/oauth/completeOAuthCode.d.ts +2 -2
- package/lib/typescript/module/ui/oauth/nativeAuthTransport.d.ts +28 -0
- package/lib/typescript/module/ui/oauth/nativeAuthTransport.d.ts.map +1 -0
- package/lib/typescript/module/ui/session/createSessionClient.d.ts +1 -1
- package/lib/typescript/module/ui/session/createSessionClient.d.ts.map +1 -1
- package/lib/typescript/module/ui/session/deviceCredentialTracker.d.ts.map +1 -1
- package/package.json +30 -30
- package/src/index.ts +2 -0
- package/src/ui/boot/__tests__/coldBootNoIdpRedirect.test.ts +56 -2
- package/src/ui/boot/runProviderColdBoot.ts +22 -2
- package/src/ui/components/OxySignInButton.tsx +20 -4
- package/src/ui/context/OxyContext.tsx +171 -40
- package/src/ui/context/__tests__/commitSessionFlow.test.ts +13 -0
- package/src/ui/context/__tests__/isolatedOAuthSession.test.ts +35 -0
- package/src/ui/context/commitSessionFlow.ts +8 -0
- package/src/ui/context/hooks/useAuthOperations.ts +55 -9
- package/src/ui/context/isolatedOAuthSession.ts +48 -0
- package/src/ui/context/oxyContextTypes.ts +4 -0
- package/src/ui/context/useOxyAccountGraph.ts +8 -5
- package/src/ui/hooks/useAuth.ts +6 -2
- package/src/ui/oauth/__tests__/completeOAuthCode.test.ts +1 -1
- package/src/ui/oauth/__tests__/nativeAuthTransport.test.ts +57 -0
- package/src/ui/oauth/__tests__/oauthBearerCommit.http.test.ts +131 -0
- package/src/ui/oauth/applicationSessionLane.ts +26 -0
- package/src/ui/oauth/completeOAuthCode.ts +3 -3
- package/src/ui/oauth/nativeAuthTransport.ts +67 -0
- package/src/ui/session/createSessionClient.ts +13 -1
- package/src/ui/session/deviceCredentialTracker.ts +7 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_core","_oxyContextHelpers","_index","useOxyAccountGraph","isAuthenticated","tokenReady","initialized","identityBound","oxyServices","sessionClient","syncFromClient","commitSession","accountDialogControllerRef","clearSessionStateRef","accounts","setAccounts","useState","refreshAccounts","useCallback","session","accessToken","list","err","isUnauthorizedStatus","current","__DEV__","loggerUtil","debug","component","useEffect","refresh","switchToAccount","accountId","IdentityBoundSessionError","deviceState","getState","some","account","switchAccount","result","actAs","user","sessionId","
|
|
1
|
+
{"version":3,"names":["_react","require","_core","_oxyContextHelpers","_index","useOxyAccountGraph","isAuthenticated","tokenReady","initialized","identityBound","isolatedOAuth","oxyServices","sessionClient","syncFromClient","commitSession","accountDialogControllerRef","clearSessionStateRef","accounts","setAccounts","useState","refreshAccounts","useCallback","session","accessToken","list","err","isUnauthorizedStatus","current","__DEV__","loggerUtil","debug","component","useEffect","refresh","switchToAccount","accountId","Error","IdentityBoundSessionError","deviceState","getState","some","account","switchAccount","result","actAs","user","sessionId","deviceSecret","deviceId","expiresAt","userId","id","activate","createAccount","data","create"],"sourceRoot":"../../../../src","sources":["ui/context/useOxyAccountGraph.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -83,9 +83,12 @@ function useAuth() {
|
|
|
83
83
|
getPublicKey,
|
|
84
84
|
showBottomSheet,
|
|
85
85
|
openAvatarPicker,
|
|
86
|
-
openAccountDialog
|
|
86
|
+
openAccountDialog,
|
|
87
|
+
ensureDeviceSessionLane
|
|
87
88
|
} = (0, _OxyContext.useOxyAuthActions)();
|
|
88
89
|
const signIn = (0, _react.useCallback)(async publicKey => {
|
|
90
|
+
const classification = ensureDeviceSessionLane();
|
|
91
|
+
if (classification) await classification;
|
|
89
92
|
// Native: sign in directly with the cryptographic identity when a public key
|
|
90
93
|
// is provided, or an existing keychain identity is found.
|
|
91
94
|
if (publicKey) {
|
|
@@ -116,9 +119,10 @@ function useAuth() {
|
|
|
116
119
|
return {
|
|
117
120
|
status: 'dialog-opened'
|
|
118
121
|
};
|
|
119
|
-
}, [oxySignIn, hasIdentity, getPublicKey, openAccountDialog]);
|
|
122
|
+
}, [oxySignIn, hasIdentity, getPublicKey, openAccountDialog, ensureDeviceSessionLane]);
|
|
120
123
|
const signOut = (0, _react.useCallback)(async () => {
|
|
121
|
-
await logout();
|
|
124
|
+
const result = await logout();
|
|
125
|
+
if (result.status === 'failed') throw result.error;
|
|
122
126
|
}, [logout]);
|
|
123
127
|
const signOutAll = (0, _react.useCallback)(async () => {
|
|
124
128
|
await logoutAll();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_OxyContext","_isWebBrowser","_index","selectAuthState","snapshot","user","account","isAuthenticated","isLoading","isReady","tokenReady","hasAccessToken","canUsePrivateApi","authResolved","isPrivateApiPending","isAuthResolved","error","message","authStatesEqual","left","right","useAuth","runtime","useOxyRuntime","useRuntimeSelector","signIn","oxySignIn","logout","logoutAll","refreshSessions","oxyServices","switchToAccount","hasIdentity","getPublicKey","showBottomSheet","openAvatarPicker","openAccountDialog","useOxyAuthActions","useCallback","publicKey","status","isWebBrowser","hasExisting","existingKey","signOut","signOutAll","refresh"],"sourceRoot":"../../../../src","sources":["ui/hooks/useAuth.ts"],"mappings":";;;;;;AA4BA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAhCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA8FA,MAAMI,eAAe,GAAIC,QAA4B,KAAiB;EACpEC,IAAI,EAAED,QAAQ,CAACE,OAAO;EACtBC,eAAe,EAAEH,QAAQ,CAACE,OAAO,KAAK,IAAI;EAC1CE,SAAS,EAAEJ,QAAQ,CAACI,SAAS;EAC7BC,OAAO,EAAEL,QAAQ,CAACM,UAAU;EAC5BC,cAAc,EAAEP,QAAQ,CAACO,cAAc;EACvCC,gBAAgB,EAAER,QAAQ,CAACS,YAAY,IAClCT,QAAQ,CAACE,OAAO,KAAK,IAAI,IACzBF,QAAQ,CAACM,UAAU,IACnBN,QAAQ,CAACO,cAAc;EAC5BG,mBAAmB,EAAE,CAACV,QAAQ,CAACS,YAAY,IACrCT,QAAQ,CAACE,OAAO,KAAK,IAAI,KAAK,CAACF,QAAQ,CAACM,UAAU,IAAI,CAACN,QAAQ,CAACO,cAAc,CAAE;EACtFI,cAAc,EAAEX,QAAQ,CAACS,YAAY;EACrCG,KAAK,EAAEZ,QAAQ,CAACY,KAAK,EAAEC,OAAO,IAAI;AACpC,CAAC,CAAC;AAEF,MAAMC,eAAe,GAAGA,CAACC,IAAe,EAAEC,KAAgB,KACxDD,IAAI,CAACd,IAAI,KAAKe,KAAK,CAACf,IAAI,IACrBc,IAAI,CAACZ,eAAe,KAAKa,KAAK,CAACb,eAAe,IAC9CY,IAAI,CAACX,SAAS,KAAKY,KAAK,CAACZ,SAAS,IAClCW,IAAI,CAACV,OAAO,KAAKW,KAAK,CAACX,OAAO,IAC9BU,IAAI,CAACR,cAAc,KAAKS,KAAK,CAACT,cAAc,IAC5CQ,IAAI,CAACP,gBAAgB,KAAKQ,KAAK,CAACR,gBAAgB,IAChDO,IAAI,CAACL,mBAAmB,KAAKM,KAAK,CAACN,mBAAmB,IACtDK,IAAI,CAACJ,cAAc,KAAKK,KAAK,CAACL,cAAc,IAC5CI,IAAI,CAACH,KAAK,KAAKI,KAAK,CAACJ,KAAK;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,OAAOA,CAAA,EAAkB;EACvC,MAAMC,OAAO,GAAG,IAAAC,oBAAa,EAAC,CAAC;EAC/B,MAAM;IACJlB,IAAI;IACJE,eAAe;IACfC,SAAS;IACTC,OAAO;IACPE,cAAc;IACdC,gBAAgB;IAChBE,mBAAmB;IACnBC,cAAc;IACdC;EACF,CAAC,GAAG,IAAAQ,yBAAkB,EAACF,OAAO,EAAEnB,eAAe,EAAEe,eAAe,CAAC;EACjE,MAAM;IACJO,MAAM,EAAEC,SAAS;IACjBC,MAAM;IACNC,SAAS;IACTC,eAAe;IACfC,WAAW;IACXC,eAAe;IACfC,WAAW;IACXC,YAAY;IACZC,eAAe;IACfC,gBAAgB;IAChBC;EACF,CAAC,GAAG,IAAAC,6BAAiB,EAAC,CAAC;EAEvB,
|
|
1
|
+
{"version":3,"names":["_react","require","_OxyContext","_isWebBrowser","_index","selectAuthState","snapshot","user","account","isAuthenticated","isLoading","isReady","tokenReady","hasAccessToken","canUsePrivateApi","authResolved","isPrivateApiPending","isAuthResolved","error","message","authStatesEqual","left","right","useAuth","runtime","useOxyRuntime","useRuntimeSelector","signIn","oxySignIn","logout","logoutAll","refreshSessions","oxyServices","switchToAccount","hasIdentity","getPublicKey","showBottomSheet","openAvatarPicker","openAccountDialog","ensureDeviceSessionLane","useOxyAuthActions","useCallback","publicKey","classification","status","isWebBrowser","hasExisting","existingKey","signOut","result","signOutAll","refresh"],"sourceRoot":"../../../../src","sources":["ui/hooks/useAuth.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.APPLICATION_CLASSIFICATION_DEADLINE_MS = void 0;
|
|
7
|
+
exports.classifyApplicationSessionLane = classifyApplicationSessionLane;
|
|
8
|
+
exports.resolveApplicationSessionLane = resolveApplicationSessionLane;
|
|
9
|
+
var _contracts = require("@oxy.so/contracts");
|
|
10
|
+
function classifyApplicationSessionLane(metadata) {
|
|
11
|
+
const application = _contracts.publicApplicationSchema.parse(metadata);
|
|
12
|
+
return application.type === 'third_party' && !application.isOfficial && !application.isInternal ? 'oauth' : 'device';
|
|
13
|
+
}
|
|
14
|
+
const APPLICATION_CLASSIFICATION_DEADLINE_MS = exports.APPLICATION_CLASSIFICATION_DEADLINE_MS = 5000;
|
|
15
|
+
|
|
16
|
+
/** The active registry projection is authoritative; names and origins confer no trust. */
|
|
17
|
+
async function resolveApplicationSessionLane(oxyServices, clientId) {
|
|
18
|
+
if (!clientId) throw new Error('A registered clientId is required');
|
|
19
|
+
// The public endpoint rejects inactive applications and unusable credentials.
|
|
20
|
+
let timer;
|
|
21
|
+
try {
|
|
22
|
+
const metadata = await Promise.race([oxyServices.apps.getPublic(clientId, {
|
|
23
|
+
cache: false
|
|
24
|
+
}), new Promise((_, reject) => {
|
|
25
|
+
timer = setTimeout(() => reject(new Error('Application classification timed out')), APPLICATION_CLASSIFICATION_DEADLINE_MS);
|
|
26
|
+
})]);
|
|
27
|
+
return classifyApplicationSessionLane(metadata);
|
|
28
|
+
} finally {
|
|
29
|
+
if (timer !== undefined) clearTimeout(timer);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=applicationSessionLane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_contracts","require","classifyApplicationSessionLane","metadata","application","publicApplicationSchema","parse","type","isOfficial","isInternal","APPLICATION_CLASSIFICATION_DEADLINE_MS","exports","resolveApplicationSessionLane","oxyServices","clientId","Error","timer","Promise","race","apps","getPublic","cache","_","reject","setTimeout","undefined","clearTimeout"],"sourceRoot":"../../../../src","sources":["ui/oauth/applicationSessionLane.ts"],"mappings":";;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAGO,SAASC,8BAA8BA,CAACC,QAAiB,EAAsB;EACpF,MAAMC,WAAW,GAAGC,kCAAuB,CAACC,KAAK,CAACH,QAAQ,CAAC;EAC3D,OAAOC,WAAW,CAACG,IAAI,KAAK,aAAa,IAAI,CAACH,WAAW,CAACI,UAAU,IAAI,CAACJ,WAAW,CAACK,UAAU,GAAG,OAAO,GAAG,QAAQ;AACtH;AAEO,MAAMC,sCAAsC,GAAAC,OAAA,CAAAD,sCAAA,GAAG,IAAI;;AAE1D;AACO,eAAeE,6BAA6BA,CACjDC,WAAwB,EACxBC,QAAmC,EACN;EAC7B,IAAI,CAACA,QAAQ,EAAE,MAAM,IAAIC,KAAK,CAAC,mCAAmC,CAAC;EACnE;EACA,IAAIC,KAAgD;EACpD,IAAI;IACF,MAAMb,QAAQ,GAAG,MAAMc,OAAO,CAACC,IAAI,CAAC,CAClCL,WAAW,CAACM,IAAI,CAACC,SAAS,CAACN,QAAQ,EAAE;MAAEO,KAAK,EAAE;IAAM,CAAC,CAAC,EACtD,IAAIJ,OAAO,CAAQ,CAACK,CAAC,EAAEC,MAAM,KAAK;MAAEP,KAAK,GAAGQ,UAAU,CAAC,MAAMD,MAAM,CAAC,IAAIR,KAAK,CAAC,sCAAsC,CAAC,CAAC,EAAEL,sCAAsC,CAAC;IAAE,CAAC,CAAC,CACpK,CAAC;IACF,OAAOR,8BAA8B,CAACC,QAAQ,CAAC;EACjD,CAAC,SAAS;IAAE,IAAIa,KAAK,KAAKS,SAAS,EAAEC,YAAY,CAACV,KAAK,CAAC;EAAE;AAC5D","ignoreList":[]}
|
|
@@ -16,10 +16,10 @@ var _core = require("@oxy.so/core");
|
|
|
16
16
|
*
|
|
17
17
|
* Ordering is deliberate and load-bearing:
|
|
18
18
|
* 1. validate `state` BEFORE anything is sent to the token endpoint,
|
|
19
|
-
* 2. exchange the code for
|
|
19
|
+
* 2. exchange the code for session material without changing the bearer,
|
|
20
20
|
* 3. run `cleanup` (drop the persisted handshake / strip `?code=` from the
|
|
21
21
|
* URL) BEFORE the commit, so a stale code can never re-enter the exchange,
|
|
22
|
-
* 4. commit the session.
|
|
22
|
+
* 4. validate and commit the session through the provider's funnel.
|
|
23
23
|
*
|
|
24
24
|
* `cleanup` runs exactly once on EVERY exit path, including a state mismatch
|
|
25
25
|
* and a failed exchange.
|
|
@@ -50,6 +50,8 @@ async function completeOAuthCode(input) {
|
|
|
50
50
|
clientId: input.clientId,
|
|
51
51
|
redirectUri: input.redirectUri,
|
|
52
52
|
codeVerifier: input.handshake.codeVerifier
|
|
53
|
+
}, {
|
|
54
|
+
plantTokens: false
|
|
53
55
|
});
|
|
54
56
|
runCleanup();
|
|
55
57
|
await input.commitSession({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_core","require","completeOAuthCode","input","cleaned","runCleanup","cleanup","handshake","returnedState","state","logger","warn","component","ok","reason","result","oxyServices","auth","oauth","exchangeCode","code","clientId","redirectUri","codeVerifier","commitSession","sessionId","accessToken","deviceId","deviceSecret","userId","user","id","expiresAt","error"],"sourceRoot":"../../../../src","sources":["ui/oauth/completeOAuthCode.ts"],"mappings":";;;;;;AAqBA,IAAAA,KAAA,GAAAC,OAAA;AArBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;;AA2BO,eAAeC,iBAAiBA,CACrCC,KAA6B,EACG;EAChC,IAAIC,OAAO,GAAG,KAAK;EACnB,MAAMC,UAAU,GAAGA,CAAA,KAAY;IAC7B,IAAID,OAAO,EAAE;IACbA,OAAO,GAAG,IAAI;IACdD,KAAK,CAACG,OAAO,GAAG,CAAC;EACnB,CAAC;EAED,IAAI,CAACH,KAAK,CAACI,SAAS,IAAI,CAACJ,KAAK,CAACK,aAAa,IAAIL,KAAK,CAACI,SAAS,CAACE,KAAK,KAAKN,KAAK,CAACK,aAAa,EAAE;IAC7FE,YAAM,CAACC,IAAI,CAAC,wDAAwD,EAAE;MACpEC,SAAS,EAAE;IACb,CAAC,CAAC;IACFP,UAAU,CAAC,CAAC;IACZ,OAAO;MAAEQ,EAAE,EAAE,KAAK;MAAEC,MAAM,EAAE;IAAiB,CAAC;EAChD;EAEA,IAAI;IACF,MAAMC,MAAM,GAAG,MAAMZ,KAAK,CAACa,WAAW,CAACC,IAAI,CAACC,KAAK,CAACC,YAAY,CAAC;MAC7DC,IAAI,EAAEjB,KAAK,CAACiB,IAAI;MAChBC,QAAQ,EAAElB,KAAK,CAACkB,QAAQ;MACxBC,WAAW,EAAEnB,KAAK,CAACmB,WAAW;MAC9BC,YAAY,EAAEpB,KAAK,CAACI,SAAS,CAACgB;IAChC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"names":["_core","require","completeOAuthCode","input","cleaned","runCleanup","cleanup","handshake","returnedState","state","logger","warn","component","ok","reason","result","oxyServices","auth","oauth","exchangeCode","code","clientId","redirectUri","codeVerifier","plantTokens","commitSession","sessionId","accessToken","deviceId","deviceSecret","userId","user","id","expiresAt","error"],"sourceRoot":"../../../../src","sources":["ui/oauth/completeOAuthCode.ts"],"mappings":";;;;;;AAqBA,IAAAA,KAAA,GAAAC,OAAA;AArBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;;AA2BO,eAAeC,iBAAiBA,CACrCC,KAA6B,EACG;EAChC,IAAIC,OAAO,GAAG,KAAK;EACnB,MAAMC,UAAU,GAAGA,CAAA,KAAY;IAC7B,IAAID,OAAO,EAAE;IACbA,OAAO,GAAG,IAAI;IACdD,KAAK,CAACG,OAAO,GAAG,CAAC;EACnB,CAAC;EAED,IAAI,CAACH,KAAK,CAACI,SAAS,IAAI,CAACJ,KAAK,CAACK,aAAa,IAAIL,KAAK,CAACI,SAAS,CAACE,KAAK,KAAKN,KAAK,CAACK,aAAa,EAAE;IAC7FE,YAAM,CAACC,IAAI,CAAC,wDAAwD,EAAE;MACpEC,SAAS,EAAE;IACb,CAAC,CAAC;IACFP,UAAU,CAAC,CAAC;IACZ,OAAO;MAAEQ,EAAE,EAAE,KAAK;MAAEC,MAAM,EAAE;IAAiB,CAAC;EAChD;EAEA,IAAI;IACF,MAAMC,MAAM,GAAG,MAAMZ,KAAK,CAACa,WAAW,CAACC,IAAI,CAACC,KAAK,CAACC,YAAY,CAAC;MAC7DC,IAAI,EAAEjB,KAAK,CAACiB,IAAI;MAChBC,QAAQ,EAAElB,KAAK,CAACkB,QAAQ;MACxBC,WAAW,EAAEnB,KAAK,CAACmB,WAAW;MAC9BC,YAAY,EAAEpB,KAAK,CAACI,SAAS,CAACgB;IAChC,CAAC,EAAE;MAAEC,WAAW,EAAE;IAAM,CAAC,CAAC;IAC1BnB,UAAU,CAAC,CAAC;IACZ,MAAMF,KAAK,CAACsB,aAAa,CAAC;MACxBC,SAAS,EAAEX,MAAM,CAACW,SAAS;MAC3BC,WAAW,EAAEZ,MAAM,CAACY,WAAW;MAC/BC,QAAQ,EAAEb,MAAM,CAACa,QAAQ;MACzBC,YAAY,EAAEd,MAAM,CAACc,YAAY;MACjCC,MAAM,EAAEf,MAAM,CAACgB,IAAI,CAACC,EAAE;MACtBC,SAAS,EAAElB,MAAM,CAACkB,SAAS;MAC3BF,IAAI,EAAEhB,MAAM,CAACgB;IACf,CAAC,CAAC;IACF,OAAO;MAAElB,EAAE,EAAE;IAAK,CAAC;EACrB,CAAC,CAAC,OAAOqB,KAAK,EAAE;IACdxB,YAAM,CAACC,IAAI,CAAC,4BAA4B,EAAE;MAAEC,SAAS,EAAE;IAAoB,CAAC,EAAEsB,KAAK,CAAC;IACpF7B,UAAU,CAAC,CAAC;IACZ,OAAO;MAAEQ,EAAE,EAAE,KAAK;MAAEC,MAAM,EAAE;IAAkB,CAAC;EACjD;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.startNativeOAuthSignIn = startNativeOAuthSignIn;
|
|
7
|
+
var _oauthNavigation = require("../components/oauthNavigation.js");
|
|
8
|
+
var _applicationSessionLane = require("./applicationSessionLane.js");
|
|
9
|
+
var _completeOAuthCode = require("./completeOAuthCode.js");
|
|
10
|
+
var _oauthHandshake = require("./oauthHandshake.js");
|
|
11
|
+
const attempts = new WeakSet();
|
|
12
|
+
function isExactRedirectUri(value) {
|
|
13
|
+
if (!value || value !== value.trim() || /\s/.test(value)) return false;
|
|
14
|
+
try {
|
|
15
|
+
const uri = new URL(value);
|
|
16
|
+
return !uri.username && !uri.password && !uri.hash && !['code', 'state', 'error', 'error_description'].some(key => uri.searchParams.has(key));
|
|
17
|
+
} catch {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** SDK owns the in-memory handshake, observed native callback and session commit. */
|
|
23
|
+
async function startNativeOAuthSignIn(context, options) {
|
|
24
|
+
if (context.platform !== 'native') return {
|
|
25
|
+
status: 'unsupported',
|
|
26
|
+
reason: 'unsupported-platform'
|
|
27
|
+
};
|
|
28
|
+
if (!context.clientId) return {
|
|
29
|
+
status: 'unsupported',
|
|
30
|
+
reason: 'missing-client-id'
|
|
31
|
+
};
|
|
32
|
+
if (context.identityBound) return {
|
|
33
|
+
status: 'unsupported',
|
|
34
|
+
reason: 'identity-bound'
|
|
35
|
+
};
|
|
36
|
+
if (!isExactRedirectUri(options.redirectUri)) return {
|
|
37
|
+
status: 'failed',
|
|
38
|
+
reason: 'invalid-redirect-uri'
|
|
39
|
+
};
|
|
40
|
+
if (attempts.has(context.oxyServices)) return {
|
|
41
|
+
status: 'failed',
|
|
42
|
+
reason: 'already-in-progress'
|
|
43
|
+
};
|
|
44
|
+
attempts.add(context.oxyServices);
|
|
45
|
+
try {
|
|
46
|
+
let lane;
|
|
47
|
+
try {
|
|
48
|
+
lane = await (0, _applicationSessionLane.resolveApplicationSessionLane)(context.oxyServices, context.clientId);
|
|
49
|
+
} catch {
|
|
50
|
+
return {
|
|
51
|
+
status: 'failed',
|
|
52
|
+
reason: 'client-resolution-failed'
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (lane !== 'oauth') return {
|
|
56
|
+
status: 'unsupported',
|
|
57
|
+
reason: 'not-third-party'
|
|
58
|
+
};
|
|
59
|
+
const prepared = await (0, _oauthHandshake.prepareAuthorizeRequest)({
|
|
60
|
+
clientId: context.clientId,
|
|
61
|
+
redirectUri: options.redirectUri,
|
|
62
|
+
authorizeBaseUrl: context.authorizeBaseUrl
|
|
63
|
+
});
|
|
64
|
+
const {
|
|
65
|
+
redirectUrl
|
|
66
|
+
} = await (0, _oauthNavigation.openAuthorizeUrlNative)(prepared.authorizeUrl, options.redirectUri, {
|
|
67
|
+
allowExternalFallback: false
|
|
68
|
+
});
|
|
69
|
+
if (!redirectUrl) return {
|
|
70
|
+
status: 'cancelled'
|
|
71
|
+
};
|
|
72
|
+
const prefix = `${options.redirectUri}${options.redirectUri.includes('?') ? '&' : '?'}`;
|
|
73
|
+
if (!redirectUrl.startsWith(prefix) || redirectUrl.includes('#')) return {
|
|
74
|
+
status: 'failed',
|
|
75
|
+
reason: 'native-callback-invalid'
|
|
76
|
+
};
|
|
77
|
+
const parameters = new URLSearchParams(redirectUrl.slice(prefix.length));
|
|
78
|
+
if ([...new URL(options.redirectUri).searchParams.keys()].some(key => parameters.has(key))) return {
|
|
79
|
+
status: 'failed',
|
|
80
|
+
reason: 'native-callback-invalid'
|
|
81
|
+
};
|
|
82
|
+
if (['code', 'state', 'error', 'error_description'].some(key => parameters.getAll(key).length > 1)) return {
|
|
83
|
+
status: 'failed',
|
|
84
|
+
reason: 'native-callback-invalid'
|
|
85
|
+
};
|
|
86
|
+
if (parameters.get('state') !== prepared.handshake.state) return {
|
|
87
|
+
status: 'failed',
|
|
88
|
+
reason: 'state-mismatch'
|
|
89
|
+
};
|
|
90
|
+
const code = parameters.get('code');
|
|
91
|
+
if (parameters.has('error') || !code) return {
|
|
92
|
+
status: 'failed',
|
|
93
|
+
reason: 'native-callback-invalid'
|
|
94
|
+
};
|
|
95
|
+
const completion = await (0, _completeOAuthCode.completeOAuthCode)({
|
|
96
|
+
oxyServices: context.oxyServices,
|
|
97
|
+
clientId: context.clientId,
|
|
98
|
+
code,
|
|
99
|
+
returnedState: parameters.get('state'),
|
|
100
|
+
handshake: prepared.handshake,
|
|
101
|
+
redirectUri: options.redirectUri,
|
|
102
|
+
commitSession: context.commitSession
|
|
103
|
+
});
|
|
104
|
+
return completion.ok ? {
|
|
105
|
+
status: 'signed-in'
|
|
106
|
+
} : {
|
|
107
|
+
status: 'failed',
|
|
108
|
+
reason: completion.reason
|
|
109
|
+
};
|
|
110
|
+
} catch {
|
|
111
|
+
return {
|
|
112
|
+
status: 'failed',
|
|
113
|
+
reason: 'exchange-failed'
|
|
114
|
+
};
|
|
115
|
+
} finally {
|
|
116
|
+
attempts.delete(context.oxyServices);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=nativeAuthTransport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_oauthNavigation","require","_applicationSessionLane","_completeOAuthCode","_oauthHandshake","attempts","WeakSet","isExactRedirectUri","value","trim","test","uri","URL","username","password","hash","some","key","searchParams","has","startNativeOAuthSignIn","context","options","platform","status","reason","clientId","identityBound","redirectUri","oxyServices","add","lane","resolveApplicationSessionLane","prepared","prepareAuthorizeRequest","authorizeBaseUrl","redirectUrl","openAuthorizeUrlNative","authorizeUrl","allowExternalFallback","prefix","includes","startsWith","parameters","URLSearchParams","slice","length","keys","getAll","get","handshake","state","code","completion","completeOAuthCode","returnedState","commitSession","ok","delete"],"sourceRoot":"../../../../src","sources":["ui/oauth/nativeAuthTransport.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -40,12 +40,24 @@ var _tokenTransport = require("./tokenTransport.js");
|
|
|
40
40
|
* account, the client tracks device state truthfully but never re-binds its
|
|
41
41
|
* bearer to the device's mutable active account.
|
|
42
42
|
*/
|
|
43
|
-
function createSessionClient(oxyServices, onUnauthenticated, getPinnedAccountId) {
|
|
44
|
-
const
|
|
43
|
+
function createSessionClient(oxyServices, onUnauthenticated, getPinnedAccountId, isDeviceSessionAllowed = () => true, onFullExplicitSignOut) {
|
|
44
|
+
const baseHost = (0, _session.createSessionClientHost)(oxyServices);
|
|
45
|
+
const host = {
|
|
46
|
+
...baseHost,
|
|
47
|
+
getAccessToken: () => isDeviceSessionAllowed() ? baseHost.getAccessToken() : null,
|
|
48
|
+
setTokens: token => {
|
|
49
|
+
if (isDeviceSessionAllowed()) baseHost.setTokens(token);
|
|
50
|
+
},
|
|
51
|
+
makeRequest: async (method, url, data, requestOptions) => {
|
|
52
|
+
if (!isDeviceSessionAllowed()) throw new Error('An isolated OAuth session cannot access the shared device');
|
|
53
|
+
return baseHost.makeRequest(method, url, data, requestOptions);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
45
56
|
const transport = (0, _tokenTransport.createTokenTransport)(oxyServices, getPinnedAccountId);
|
|
46
57
|
const client = new _session.SessionClient(host, {
|
|
47
58
|
transport,
|
|
48
59
|
onUnauthenticated,
|
|
60
|
+
onFullExplicitSignOut,
|
|
49
61
|
getPinnedAccountId
|
|
50
62
|
});
|
|
51
63
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_session","require","_tokenTransport","createSessionClient","oxyServices","onUnauthenticated","getPinnedAccountId","
|
|
1
|
+
{"version":3,"names":["_session","require","_tokenTransport","createSessionClient","oxyServices","onUnauthenticated","getPinnedAccountId","isDeviceSessionAllowed","onFullExplicitSignOut","baseHost","createSessionClientHost","host","getAccessToken","setTokens","token","makeRequest","method","url","data","requestOptions","Error","transport","createTokenTransport","client","SessionClient"],"sourceRoot":"../../../../src","sources":["ui/session/createSessionClient.ts"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,eAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,mBAAmBA,CACjCC,WAAwB,EACxBC,iBAAwD,EACxDC,kBAAwC,EACxCC,sBAAqC,GAAGA,CAAA,KAAM,IAAI,EAClDC,qBAA2C,EAI3C;EACA,MAAMC,QAAQ,GAAG,IAAAC,gCAAuB,EAACN,WAAW,CAAC;EACrD,MAAMO,IAAI,GAAG;IACX,GAAGF,QAAQ;IACXG,cAAc,EAAEA,CAAA,KAAML,sBAAsB,CAAC,CAAC,GAAGE,QAAQ,CAACG,cAAc,CAAC,CAAC,GAAG,IAAI;IACjFC,SAAS,EAAGC,KAAa,IAAK;MAAE,IAAIP,sBAAsB,CAAC,CAAC,EAAEE,QAAQ,CAACI,SAAS,CAACC,KAAK,CAAC;IAAE,CAAC;IAC1FC,WAAW,EAAE,MAAAA,CAAUC,MAAsB,EAAEC,GAAW,EAAEC,IAAc,EAAEC,cAAoC,KAAiB;MAC/H,IAAI,CAACZ,sBAAsB,CAAC,CAAC,EAAE,MAAM,IAAIa,KAAK,CAAC,2DAA2D,CAAC;MAC3G,OAAOX,QAAQ,CAACM,WAAW,CAAIC,MAAM,EAAEC,GAAG,EAAEC,IAAI,EAAEC,cAAc,CAAC;IACnE;EACF,CAAC;EACD,MAAME,SAAS,GAAG,IAAAC,oCAAoB,EAAClB,WAAW,EAAEE,kBAAkB,CAAC;EACvE,MAAMiB,MAAM,GAAG,IAAIC,sBAAa,CAACb,IAAI,EAAE;IACrCU,SAAS;IACThB,iBAAiB;IACjBG,qBAAqB;IACrBF;EACF,CAAC,CAAC;EACF,OAAO;IAAEiB,MAAM;IAAEZ;EAAK,CAAC;AACzB","ignoreList":[]}
|
|
@@ -23,6 +23,7 @@ function credentialOf(state) {
|
|
|
23
23
|
function trackDeviceCredential(store) {
|
|
24
24
|
let held;
|
|
25
25
|
return {
|
|
26
|
+
...store,
|
|
26
27
|
load: async () => {
|
|
27
28
|
const state = await store.load();
|
|
28
29
|
held = credentialOf(state);
|
|
@@ -32,6 +33,13 @@ function trackDeviceCredential(store) {
|
|
|
32
33
|
held = credentialOf(state);
|
|
33
34
|
return store.save(state);
|
|
34
35
|
},
|
|
36
|
+
...(store.saveIfCurrent ? {
|
|
37
|
+
saveIfCurrent: async (state, guard) => {
|
|
38
|
+
const committed = await store.saveIfCurrent?.(state, guard);
|
|
39
|
+
if (committed) held = credentialOf(state);
|
|
40
|
+
return committed === true;
|
|
41
|
+
}
|
|
42
|
+
} : {}),
|
|
35
43
|
clear: async () => {
|
|
36
44
|
held = null;
|
|
37
45
|
await store.clear();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["credentialOf","state","deviceId","deviceSecret","trackDeviceCredential","store","held","load","save","clear","heldDeviceCredential"],"sourceRoot":"../../../../src","sources":["ui/session/deviceCredentialTracker.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAgBA,SAASA,YAAYA,CAACC,KAA0D,EAA+B;EAC7G,OAAOA,KAAK,EAAEC,QAAQ,IAAID,KAAK,CAACE,YAAY,GACxC;IAAED,QAAQ,EAAED,KAAK,CAACC,QAAQ;IAAEC,YAAY,EAAEF,KAAK,CAACE;EAAa,CAAC,GAC9D,IAAI;AACV;AAEO,SAASC,qBAAqBA,CAACC,KAAqB,EAAoC;EAC7F,IAAIC,IAA6C;EACjD,OAAO;
|
|
1
|
+
{"version":3,"names":["credentialOf","state","deviceId","deviceSecret","trackDeviceCredential","store","held","load","save","saveIfCurrent","guard","committed","clear","heldDeviceCredential"],"sourceRoot":"../../../../src","sources":["ui/session/deviceCredentialTracker.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAgBA,SAASA,YAAYA,CAACC,KAA0D,EAA+B;EAC7G,OAAOA,KAAK,EAAEC,QAAQ,IAAID,KAAK,CAACE,YAAY,GACxC;IAAED,QAAQ,EAAED,KAAK,CAACC,QAAQ;IAAEC,YAAY,EAAEF,KAAK,CAACE;EAAa,CAAC,GAC9D,IAAI;AACV;AAEO,SAASC,qBAAqBA,CAACC,KAAqB,EAAoC;EAC7F,IAAIC,IAA6C;EACjD,OAAO;IACL,GAAGD,KAAK;IACRE,IAAI,EAAE,MAAAA,CAAA,KAAY;MAChB,MAAMN,KAAK,GAAG,MAAMI,KAAK,CAACE,IAAI,CAAC,CAAC;MAChCD,IAAI,GAAGN,YAAY,CAACC,KAAK,CAAC;MAC1B,OAAOA,KAAK;IACd,CAAC;IACDO,IAAI,EAAE,MAAOP,KAAK,IAAK;MACrBK,IAAI,GAAGN,YAAY,CAACC,KAAK,CAAC;MAC1B,OAAOI,KAAK,CAACG,IAAI,CAACP,KAAK,CAAC;IAC1B,CAAC;IACD,IAAII,KAAK,CAACI,aAAa,GAAG;MAACA,aAAa,EAAE,MAAAA,CAAOR,KAAyB,EAAES,KAA0B,KAAK;QACzG,MAAMC,SAAS,GAAG,MAAMN,KAAK,CAACI,aAAa,GAAGR,KAAK,EAAES,KAAK,CAAC;QAC3D,IAAIC,SAAS,EAAEL,IAAI,GAAGN,YAAY,CAACC,KAAK,CAAC;QACzC,OAAOU,SAAS,KAAK,IAAI;MAC3B;IAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACRC,KAAK,EAAE,MAAAA,CAAA,KAAY;MACjBN,IAAI,GAAG,IAAI;MACX,MAAMD,KAAK,CAACO,KAAK,CAAC,CAAC;IACrB,CAAC;IACDC,oBAAoB,EAAEA,CAAA,KAAMP;EAC9B,CAAC;AACH","ignoreList":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { resolveApplicationSessionLane } from "../oauth/applicationSessionLane.js";
|
|
3
4
|
import { logger as loggerUtil } from '@oxy.so/core';
|
|
4
5
|
import { runSessionColdBoot } from '@oxy.so/core/session';
|
|
5
6
|
import { loadPersistedDeviceCredential } from "../utils/deviceCredential.js";
|
|
@@ -94,6 +95,11 @@ export async function runProviderColdBoot(opts) {
|
|
|
94
95
|
const identityBound = sessionMode === 'identity';
|
|
95
96
|
setTokenReady(false);
|
|
96
97
|
try {
|
|
98
|
+
// Classification precedes every local-secret, shared-credential and identity
|
|
99
|
+
// probe. Unavailable registry metadata fails closed, including offline boot.
|
|
100
|
+
const lane = await (opts.resolveSessionLane?.() ?? resolveApplicationSessionLane(oxyServices, clientId));
|
|
101
|
+
await opts.onClassified?.(lane);
|
|
102
|
+
if (identityBound && lane !== 'device') return;
|
|
97
103
|
// The redirect transport's RETURN leg. An app reaches it whenever the browser
|
|
98
104
|
// BLOCKED the sign-in popup and `startWebOAuthSignIn` fell back to a
|
|
99
105
|
// full-page redirect (`popup-blocked` / `popup-navigation-failed`), so it is
|
|
@@ -105,7 +111,8 @@ export async function runProviderColdBoot(opts) {
|
|
|
105
111
|
clientId,
|
|
106
112
|
authRedirectUri,
|
|
107
113
|
commitSession: input => commitSession(input, {
|
|
108
|
-
activate: true
|
|
114
|
+
activate: true,
|
|
115
|
+
oauth: true
|
|
109
116
|
})
|
|
110
117
|
});
|
|
111
118
|
if (oauthCompleted) {
|
|
@@ -113,6 +120,11 @@ export async function runProviderColdBoot(opts) {
|
|
|
113
120
|
markAuthResolved();
|
|
114
121
|
return;
|
|
115
122
|
}
|
|
123
|
+
if (lane === 'oauth') {
|
|
124
|
+
setTokenReady(true);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
await opts.beforeDeviceBoot?.();
|
|
116
128
|
|
|
117
129
|
// Best-effort connectivity probe up front: an EXPLICIT offline verdict skips
|
|
118
130
|
// the two doomed network steps so routing settles immediately instead of
|
|
@@ -188,6 +200,7 @@ export async function runProviderColdBoot(opts) {
|
|
|
188
200
|
}
|
|
189
201
|
}
|
|
190
202
|
});
|
|
203
|
+
await opts.afterDeviceBoot?.();
|
|
191
204
|
} catch (error) {
|
|
192
205
|
if (__DEV__) {
|
|
193
206
|
loggerUtil.error('Cold boot error', error instanceof Error ? error : new Error(String(error)), {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["logger","loggerUtil","runSessionColdBoot","loadPersistedDeviceCredential","createPlatformSharedDeviceCredentialStore","tryCompleteOAuthReturn","isWebBrowser","isNetConnectivityExplicitlyOffline","SESSION_HANDOFF_DEADLINE_MS","COLD_BOOT_OVERALL_DEADLINE_MS","OFFLINE_PROBE_TIMEOUT_MS","detectOfflineHint","online","globalThis","navigator","onLine","NetInfo","state","Promise","race","default","fetch","resolve","setTimeout","runProviderColdBoot","opts","oxyServices","authStore","clientId","authRedirectUri","sessionMode","identity","sessionClient","syncDeviceCredentialToHost","commitSession","markAuthResolved","setTokenReady","identityBound","oauthCompleted","input","activate","offline","oxy","store","platform","isWeb","isNative","sharedDeviceCredential","undefined","overallDeadlineMs","isOffline","onStepDeadline","stepId","warn","component","method","onSession","session","handoff","sessionId","accessToken","userId","deviceState","handoffDeadlineId","finally","clearTimeout","onSignedOut","cred","start","socketError","__DEV__","debug","onStepError","id","error","Error","String"],"sourceRoot":"../../../../src","sources":["ui/boot/runProviderColdBoot.ts"],"mappings":";;AAAA,SAASA,MAAM,IAAIC,UAAU,QAA0B,cAAc;AACrE,SAASC,kBAAkB,QAAqE,sBAAsB;AAEtH,SAASC,6BAA6B,QAAQ,8BAA2B;AACzE,SAASC,yCAAyC,QAAQ,2CAAwC;AAClG,SAASC,sBAAsB,QAAQ,yBAAsB;AAC7D,SAASC,YAAY,QAAQ,0BAAuB;AACpD,SAASC,kCAAkC,QAAQ,6BAA0B;AAG7E;AACA,OAAO,MAAMC,2BAA2B,GAAG,IAAI;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,6BAA6B,GAAG,MAAM;;AAEnD;AACA;AACA;AACA;AACA;AACA,MAAMC,wBAAwB,GAAG,GAAG;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeC,iBAAiBA,CAAA,EAAqB;EACnD,IAAI;IACF,IAAIL,YAAY,CAAC,CAAC,EAAE;MAClB,MAAMM,MAAM,GAAIC,UAAU,CAA0CC,SAAS,EAAEC,MAAM;MACrF;MACA,OAAOH,MAAM,KAAK,KAAK;IACzB;IACA,MAAMI,OAAO,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC;IAC/D,MAAMC,KAAK,GAAG,MAAMC,OAAO,CAACC,IAAI,CAAC,CAC/BH,OAAO,CAACI,OAAO,CAACC,KAAK,CAAC,CAAC,EACvB,IAAIH,OAAO,CAAQI,OAAO,IAAK;MAC7BC,UAAU,CAAC,MAAMD,OAAO,CAAC,IAAI,CAAC,EAAEZ,wBAAwB,CAAC;IAC3D,CAAC,CAAC,CACH,CAAC;IACF;IACA;IACA,OAAOH,kCAAkC,CAACU,KAAK,CAAC;EAClD,CAAC,CAAC,MAAM;IACN;IACA,OAAO,KAAK;EACd;AACF;
|
|
1
|
+
{"version":3,"names":["resolveApplicationSessionLane","logger","loggerUtil","runSessionColdBoot","loadPersistedDeviceCredential","createPlatformSharedDeviceCredentialStore","tryCompleteOAuthReturn","isWebBrowser","isNetConnectivityExplicitlyOffline","SESSION_HANDOFF_DEADLINE_MS","COLD_BOOT_OVERALL_DEADLINE_MS","OFFLINE_PROBE_TIMEOUT_MS","detectOfflineHint","online","globalThis","navigator","onLine","NetInfo","state","Promise","race","default","fetch","resolve","setTimeout","runProviderColdBoot","opts","oxyServices","authStore","clientId","authRedirectUri","sessionMode","identity","sessionClient","syncDeviceCredentialToHost","commitSession","markAuthResolved","setTokenReady","identityBound","lane","resolveSessionLane","onClassified","oauthCompleted","input","activate","oauth","beforeDeviceBoot","offline","oxy","store","platform","isWeb","isNative","sharedDeviceCredential","undefined","overallDeadlineMs","isOffline","onStepDeadline","stepId","warn","component","method","onSession","session","handoff","sessionId","accessToken","userId","deviceState","handoffDeadlineId","finally","clearTimeout","onSignedOut","cred","start","socketError","__DEV__","debug","onStepError","id","error","afterDeviceBoot","Error","String"],"sourceRoot":"../../../../src","sources":["ui/boot/runProviderColdBoot.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { classifyApplicationSessionLane } from "../oauth/applicationSessionLane.js";
|
|
3
4
|
import { useCallback, useState, useEffect, useRef } from 'react';
|
|
4
5
|
import { Platform } from 'react-native';
|
|
5
6
|
import { logger, generatePkcePair, generateOAuthState, buildOAuthAuthorizeUrl } from '@oxy.so/core';
|
|
@@ -65,7 +66,8 @@ export const OxySignInButton = ({
|
|
|
65
66
|
disabled = false,
|
|
66
67
|
showWhenAuthenticated = false,
|
|
67
68
|
oauthRedirectUri,
|
|
68
|
-
onOAuthResult
|
|
69
|
+
onOAuthResult,
|
|
70
|
+
nativeOAuthCompletion
|
|
69
71
|
}) => {
|
|
70
72
|
const {
|
|
71
73
|
t
|
|
@@ -75,7 +77,8 @@ export const OxySignInButton = ({
|
|
|
75
77
|
oxyServices,
|
|
76
78
|
clientId,
|
|
77
79
|
webAuthMode,
|
|
78
|
-
startWebOAuthSignIn
|
|
80
|
+
startWebOAuthSignIn,
|
|
81
|
+
startNativeOAuthSignIn
|
|
79
82
|
} = useOxy();
|
|
80
83
|
const {
|
|
81
84
|
isAuthenticated,
|
|
@@ -111,7 +114,9 @@ export const OxySignInButton = ({
|
|
|
111
114
|
if (cached && cached.clientId === clientId && cached.oxyServices === oxyServices) {
|
|
112
115
|
return cached.promise;
|
|
113
116
|
}
|
|
114
|
-
const promise = oxyServices.apps.getPublic(clientId
|
|
117
|
+
const promise = oxyServices.apps.getPublic(clientId, {
|
|
118
|
+
cache: false
|
|
119
|
+
}).catch(error => {
|
|
115
120
|
// Only clear if this is still the live entry (a later resolve may have
|
|
116
121
|
// replaced it after a clientId/oxyServices change).
|
|
117
122
|
if (appResolutionRef.current?.promise === promise) {
|
|
@@ -192,6 +197,18 @@ export const OxySignInButton = ({
|
|
|
192
197
|
}
|
|
193
198
|
return;
|
|
194
199
|
}
|
|
200
|
+
if (nativeOAuthCompletion === 'sdk') {
|
|
201
|
+
if (onOAuthResult) {
|
|
202
|
+
notifyNotConfigured(app.name);
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
const result = await startNativeOAuthSignIn({
|
|
206
|
+
redirectUri: oauthRedirectUri
|
|
207
|
+
});
|
|
208
|
+
if (result.status === 'failed') notifyFailed();
|
|
209
|
+
if (result.status === 'unsupported') notifyNotConfigured(app.name);
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
195
212
|
|
|
196
213
|
// Native: open the in-app auth session, then hand the handshake to the
|
|
197
214
|
// RP so it can complete the token exchange from its deep-link callback.
|
|
@@ -218,7 +235,7 @@ export const OxySignInButton = ({
|
|
|
218
235
|
application: app.name
|
|
219
236
|
});
|
|
220
237
|
notifyNotConfigured(app.name);
|
|
221
|
-
}, [clientId, oauthRedirectUri, onOAuthResult, startOfficialSignIn, startWebOAuthSignIn, shouldPreOpenPopup, notifyNotConfigured, notifyFailed]);
|
|
238
|
+
}, [clientId, oauthRedirectUri, onOAuthResult, nativeOAuthCompletion, startNativeOAuthSignIn, startOfficialSignIn, startWebOAuthSignIn, shouldPreOpenPopup, notifyNotConfigured, notifyFailed]);
|
|
222
239
|
|
|
223
240
|
// Resolve the Application once, then route: third-party → OAuth; first-party
|
|
224
241
|
// / official → the in-app dialog. An unresolved client must fail closed:
|
|
@@ -236,7 +253,7 @@ export const OxySignInButton = ({
|
|
|
236
253
|
const resolving = resolvePublicApplication();
|
|
237
254
|
if (!resolving) {
|
|
238
255
|
closeOAuthPopup(popup);
|
|
239
|
-
|
|
256
|
+
notifyNotConfigured('this app');
|
|
240
257
|
return;
|
|
241
258
|
}
|
|
242
259
|
let app;
|
|
@@ -251,7 +268,7 @@ export const OxySignInButton = ({
|
|
|
251
268
|
notifyFailed();
|
|
252
269
|
return;
|
|
253
270
|
}
|
|
254
|
-
if (app
|
|
271
|
+
if (classifyApplicationSessionLane(app) === 'oauth') {
|
|
255
272
|
await startThirdPartyOAuth(app, popup);
|
|
256
273
|
return;
|
|
257
274
|
}
|
|
@@ -269,9 +286,10 @@ export const OxySignInButton = ({
|
|
|
269
286
|
});
|
|
270
287
|
notifyFailed();
|
|
271
288
|
} finally {
|
|
289
|
+
appResolutionRef.current = null;
|
|
272
290
|
routingRef.current = false;
|
|
273
291
|
}
|
|
274
|
-
}, [resolvePublicApplication, startOfficialSignIn, startThirdPartyOAuth, clientId, notifyFailed]);
|
|
292
|
+
}, [resolvePublicApplication, startOfficialSignIn, startThirdPartyOAuth, clientId, notifyNotConfigured, notifyFailed]);
|
|
275
293
|
|
|
276
294
|
// Defer to a caller-supplied handler, otherwise route by application type.
|
|
277
295
|
//
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useState","useEffect","useRef","Platform","logger","generatePkcePair","generateOAuthState","buildOAuthAuthorizeUrl","useAuthStore","useShallow","SocialButton","socialButtonLabel","toast","useOxy","useI18n","subscribeToAccountDialog","openAuthorizeUrlNative","closeOAuthPopup","openOAuthPopup","jsx","_jsx","ACTION_KEYS","signIn","continue","signUp","OxySignInButton","variant","appearance","action","size","fullWidth","iconOnly","onPress","style","textStyle","text","disabled","showWhenAuthenticated","oauthRedirectUri","onOAuthResult","t","openAccountDialog","oxyServices","clientId","webAuthMode","startWebOAuthSignIn","isAuthenticated","isLoading","state","isModalOpen","setIsModalOpen","appResolutionRef","routingRef","shouldPreOpenPopup","OS","Boolean","resolvePublicApplication","cached","current","promise","apps","getPublic","catch","error","notifyNotConfigured","appName","description","app","notifyFailed","startOfficialSignIn","startThirdPartyOAuth","popup","undefined","component","application","name","result","redirectUri","status","warn","reason","pkce","Promise","all","authorizeUrl","codeChallenge","redirectUrl","codeVerifier","routeSignIn","resolving","
|
|
1
|
+
{"version":3,"names":["classifyApplicationSessionLane","useCallback","useState","useEffect","useRef","Platform","logger","generatePkcePair","generateOAuthState","buildOAuthAuthorizeUrl","useAuthStore","useShallow","SocialButton","socialButtonLabel","toast","useOxy","useI18n","subscribeToAccountDialog","openAuthorizeUrlNative","closeOAuthPopup","openOAuthPopup","jsx","_jsx","ACTION_KEYS","signIn","continue","signUp","OxySignInButton","variant","appearance","action","size","fullWidth","iconOnly","onPress","style","textStyle","text","disabled","showWhenAuthenticated","oauthRedirectUri","onOAuthResult","nativeOAuthCompletion","t","openAccountDialog","oxyServices","clientId","webAuthMode","startWebOAuthSignIn","startNativeOAuthSignIn","isAuthenticated","isLoading","state","isModalOpen","setIsModalOpen","appResolutionRef","routingRef","shouldPreOpenPopup","OS","Boolean","resolvePublicApplication","cached","current","promise","apps","getPublic","cache","catch","error","notifyNotConfigured","appName","description","app","notifyFailed","startOfficialSignIn","startThirdPartyOAuth","popup","undefined","component","application","name","result","redirectUri","status","warn","reason","pkce","Promise","all","authorizeUrl","codeChallenge","redirectUrl","codeVerifier","routeSignIn","resolving","Error","String","handlePress","isButtonDisabled","resolvedAppearance","actionKey","translated","label","brand","accessibilityLabel","children"],"sourceRoot":"../../../../src","sources":["ui/components/OxySignInButton.tsx"],"mappings":"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","ignoreList":[]}
|