ugly-app 0.1.887 → 0.1.888
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 +2 -2
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/client/auth/startLogin.d.ts +16 -0
- package/dist/client/auth/startLogin.d.ts.map +1 -1
- package/dist/client/auth/startLogin.js +107 -12
- package/dist/client/auth/startLogin.js.map +1 -1
- package/dist/client/bootstrapApp.d.ts.map +1 -1
- package/dist/client/bootstrapApp.js +24 -5
- package/dist/client/bootstrapApp.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/version.ts +1 -1
- package/src/client/auth/startLogin.ts +114 -14
- package/src/client/bootstrapApp.tsx +25 -4
package/README.md
CHANGED
|
@@ -397,7 +397,7 @@ handle.hide(); // dismiss programmatically
|
|
|
397
397
|
- **`transient`** — 20% opacity backdrop, **dismisses** on backdrop click.
|
|
398
398
|
- **`contextMenu`** — same as transient, intended for menus and pickers.
|
|
399
399
|
|
|
400
|
-
`renderLayer` receives `{ content, spring, hide }`: `spring` is a `createAnimatedValue()` result driving 0 → 1; `hide` closes the popup. The default layer animates open with `easeOut` (250ms) and closed with `easeIn` (200ms).
|
|
400
|
+
`renderLayer` receives `{ content, spring, hide }`: `spring` is a `createAnimatedValue()` result driving 0 → 1; `hide` closes the popup. The default layer animates open with `easeOut` (250ms) and closed with `easeIn` (200ms). Popups render as siblings of the router's children (managed inside `RouterProvider`), so they stack above every page but sit under the `AppProvider` legacy popup layer.
|
|
401
401
|
|
|
402
402
|
### `AppProvider` & `useApp()`
|
|
403
403
|
|
|
@@ -418,7 +418,7 @@ const {
|
|
|
418
418
|
} = useApp();
|
|
419
419
|
```
|
|
420
420
|
|
|
421
|
-
`useApp<TAsyncOptions>()` is generic in the async-options type so apps can pass a custom option through to a custom `loadingOverlay` element (accepted as an `AppProvider` prop). `useAppOptional()` returns `null` outside the provider; `useLocalizer()` returns a localizer that prefers `<StringsProvider>` data, falls back to the `AppProvider` `localizer` prop, and finally to identity.
|
|
421
|
+
`useApp<TAsyncOptions>()` is generic in the async-options type so apps can pass a custom option through to a custom `loadingOverlay` element (accepted as an `AppProvider` prop — the framework `cloneElement`s the overlay with `{ label, asyncOptions }` while `runAsync` is pending). `useAppOptional()` returns `null` outside the provider; `useLocalizer()` returns a localizer that prefers `<StringsProvider>` data, falls back to the `AppProvider` `localizer` prop, and finally to identity.
|
|
422
422
|
|
|
423
423
|
### Direct socket access
|
|
424
424
|
|
package/dist/cli/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "0.1.
|
|
1
|
+
export declare const CLI_VERSION = "0.1.888";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cli/version.js
CHANGED
|
@@ -4,11 +4,27 @@ export interface StartLoginOptions {
|
|
|
4
4
|
/** Called if verification fails (the popup path). */
|
|
5
5
|
onError?: () => void;
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* If a recent sign-in popup is in flight, clear the flag and return true. Called by
|
|
9
|
+
* bootstrap in the window that just redeemed the oauth code: true ⇒ this window IS
|
|
10
|
+
* the login popup (broadcast success + close); false ⇒ a normal tab (render here).
|
|
11
|
+
*/
|
|
12
|
+
export declare function consumeLoginPopupPending(): boolean;
|
|
13
|
+
/** Signal a completed sign-in to the opener that launched the popup (same-origin). */
|
|
14
|
+
export declare function broadcastLoginSuccess(): void;
|
|
7
15
|
/**
|
|
8
16
|
* Open the ugly.bot OAuth popup and complete login. On success, the session
|
|
9
17
|
* cookie is set via `/auth/verify` and the browser navigates to `redirectTo`
|
|
10
18
|
* (or reloads). If the popup is blocked, falls back to navigating to
|
|
11
19
|
* `redirectTo` (or `/`), where the framework's LoginPopup handles sign-in.
|
|
20
|
+
*
|
|
21
|
+
* Two completion paths:
|
|
22
|
+
* • Non-COI apps: `window.opener` survives → the popup postMessages the code here.
|
|
23
|
+
* • COI apps: COOP: same-origin severs `window.opener`, so ugly.bot can't reach us
|
|
24
|
+
* and instead redirects the popup back to this origin with `?ugly_oauth_code=`.
|
|
25
|
+
* The popup's bootstrap redeems it and broadcasts success over BroadcastChannel;
|
|
26
|
+
* we reload (the session cookie is shared same-origin). `markLoginPopupPending`
|
|
27
|
+
* tags the popup so bootstrap closes it instead of rendering the app inside it.
|
|
12
28
|
*/
|
|
13
29
|
export declare function startUglyBotLogin(opts?: StartLoginOptions): void;
|
|
14
30
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startLogin.d.ts","sourceRoot":"","sources":["../../../src/client/auth/startLogin.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,iBAAiB;IAChC,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED
|
|
1
|
+
{"version":3,"file":"startLogin.d.ts","sourceRoot":"","sources":["../../../src/client/auth/startLogin.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,iBAAiB;IAChC,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAoBD;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CASlD;AAED,sFAAsF;AACtF,wBAAgB,qBAAqB,IAAI,IAAI,CAQ5C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,iBAAsB,GAAG,IAAI,CAkFpE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACpD,IAAI,CAWN;AAID;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAUV;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAyB1C;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,IAAI,IAAI,CAMzC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAM1C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAS1C"}
|
|
@@ -10,30 +10,102 @@ const UGLY_BOT_URL = typeof window !== 'undefined'
|
|
|
10
10
|
? (window.__UGLY_BOT_URL__ ??
|
|
11
11
|
'https://ugly.bot')
|
|
12
12
|
: 'https://ugly.bot';
|
|
13
|
+
// Coordinates the cross-origin-isolated popup-login handoff. On a COI app, COOP:
|
|
14
|
+
// same-origin severs the popup's `window.opener`, so it can't postMessage the code
|
|
15
|
+
// back. Instead the popup redeems the code itself and signals the opener over this
|
|
16
|
+
// same-origin BroadcastChannel; the localStorage key (shared opener↔popup, both on
|
|
17
|
+
// this origin) tells bootstrap that the window holding the code IS the login popup.
|
|
18
|
+
const LOGIN_CHANNEL = 'ugly-bot-login';
|
|
19
|
+
const LOGIN_POPUP_KEY = 'uglyBotLoginPopup';
|
|
20
|
+
const LOGIN_POPUP_TTL_MS = 5 * 60_000;
|
|
21
|
+
/** Mark that a sign-in popup is in flight (COI path). */
|
|
22
|
+
function markLoginPopupPending() {
|
|
23
|
+
try {
|
|
24
|
+
localStorage.setItem(LOGIN_POPUP_KEY, String(Date.now()));
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
/* private mode — degrades to rendering in the popup, no worse than before */
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* If a recent sign-in popup is in flight, clear the flag and return true. Called by
|
|
32
|
+
* bootstrap in the window that just redeemed the oauth code: true ⇒ this window IS
|
|
33
|
+
* the login popup (broadcast success + close); false ⇒ a normal tab (render here).
|
|
34
|
+
*/
|
|
35
|
+
export function consumeLoginPopupPending() {
|
|
36
|
+
try {
|
|
37
|
+
const raw = localStorage.getItem(LOGIN_POPUP_KEY);
|
|
38
|
+
if (!raw)
|
|
39
|
+
return false;
|
|
40
|
+
localStorage.removeItem(LOGIN_POPUP_KEY);
|
|
41
|
+
return Date.now() - Number(raw) < LOGIN_POPUP_TTL_MS;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** Signal a completed sign-in to the opener that launched the popup (same-origin). */
|
|
48
|
+
export function broadcastLoginSuccess() {
|
|
49
|
+
try {
|
|
50
|
+
new BroadcastChannel(LOGIN_CHANNEL).postMessage({
|
|
51
|
+
type: 'ugly-bot-login-success',
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
/* no BroadcastChannel (old engine) */
|
|
56
|
+
}
|
|
57
|
+
}
|
|
13
58
|
/**
|
|
14
59
|
* Open the ugly.bot OAuth popup and complete login. On success, the session
|
|
15
60
|
* cookie is set via `/auth/verify` and the browser navigates to `redirectTo`
|
|
16
61
|
* (or reloads). If the popup is blocked, falls back to navigating to
|
|
17
62
|
* `redirectTo` (or `/`), where the framework's LoginPopup handles sign-in.
|
|
63
|
+
*
|
|
64
|
+
* Two completion paths:
|
|
65
|
+
* • Non-COI apps: `window.opener` survives → the popup postMessages the code here.
|
|
66
|
+
* • COI apps: COOP: same-origin severs `window.opener`, so ugly.bot can't reach us
|
|
67
|
+
* and instead redirects the popup back to this origin with `?ugly_oauth_code=`.
|
|
68
|
+
* The popup's bootstrap redeems it and broadcasts success over BroadcastChannel;
|
|
69
|
+
* we reload (the session cookie is shared same-origin). `markLoginPopupPending`
|
|
70
|
+
* tags the popup so bootstrap closes it instead of rendering the app inside it.
|
|
18
71
|
*/
|
|
19
72
|
export function startUglyBotLogin(opts = {}) {
|
|
20
73
|
if (typeof window === 'undefined')
|
|
21
74
|
return;
|
|
22
75
|
const origin = encodeURIComponent(window.location.origin);
|
|
23
76
|
const url = `${UGLY_BOT_URL}/oauth?origin=${origin}`;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return;
|
|
77
|
+
// Only COI apps hit the severed-opener path; tagging non-COI would leave a stale
|
|
78
|
+
// flag that a later magic-link tab could wrongly self-close on.
|
|
79
|
+
if (window.crossOriginIsolated) {
|
|
80
|
+
markLoginPopupPending();
|
|
29
81
|
}
|
|
30
|
-
const
|
|
82
|
+
const finish = () => {
|
|
83
|
+
if (opts.redirectTo)
|
|
84
|
+
window.location.href = opts.redirectTo;
|
|
85
|
+
else
|
|
86
|
+
window.location.reload();
|
|
87
|
+
};
|
|
88
|
+
let chan = null;
|
|
89
|
+
const cleanup = () => {
|
|
90
|
+
window.removeEventListener('message', handler);
|
|
91
|
+
if (chan) {
|
|
92
|
+
try {
|
|
93
|
+
chan.close();
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
/* ignore */
|
|
97
|
+
}
|
|
98
|
+
chan = null;
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
// COI path: the popup redeems the code (bootstrap) and broadcasts success here.
|
|
102
|
+
async function handler(event) {
|
|
31
103
|
if (event.origin !== UGLY_BOT_URL)
|
|
32
104
|
return;
|
|
33
105
|
const data = event.data;
|
|
34
106
|
if (data?.type !== 'ugly-bot-oauth' || !data.code)
|
|
35
107
|
return;
|
|
36
|
-
|
|
108
|
+
cleanup();
|
|
37
109
|
try {
|
|
38
110
|
const res = await fetch('/auth/verify', {
|
|
39
111
|
method: 'POST',
|
|
@@ -42,15 +114,38 @@ export function startUglyBotLogin(opts = {}) {
|
|
|
42
114
|
});
|
|
43
115
|
if (!res.ok)
|
|
44
116
|
throw new Error('Auth failed');
|
|
45
|
-
|
|
46
|
-
window.location.href = opts.redirectTo;
|
|
47
|
-
else
|
|
48
|
-
window.location.reload();
|
|
117
|
+
finish();
|
|
49
118
|
}
|
|
50
119
|
catch {
|
|
51
120
|
opts.onError?.();
|
|
52
121
|
}
|
|
53
|
-
}
|
|
122
|
+
}
|
|
123
|
+
try {
|
|
124
|
+
chan = new BroadcastChannel(LOGIN_CHANNEL);
|
|
125
|
+
chan.onmessage = (e) => {
|
|
126
|
+
if (e.data?.type === 'ugly-bot-login-success') {
|
|
127
|
+
cleanup();
|
|
128
|
+
finish();
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
/* no BroadcastChannel — the opener.postMessage path still covers non-COI */
|
|
134
|
+
}
|
|
135
|
+
const popup = window.open(url, 'ugly-bot-login', 'width=480,height=640,left=200,top=100');
|
|
136
|
+
if (!popup) {
|
|
137
|
+
// Popup blocked — degrade to the login screen on the target route.
|
|
138
|
+
cleanup();
|
|
139
|
+
try {
|
|
140
|
+
localStorage.removeItem(LOGIN_POPUP_KEY);
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
/* ignore */
|
|
144
|
+
}
|
|
145
|
+
window.location.href = opts.redirectTo ?? '/';
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
// Non-COI path: opener intact → the popup postMessages the code to us.
|
|
54
149
|
window.addEventListener('message', handler);
|
|
55
150
|
}
|
|
56
151
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startLogin.js","sourceRoot":"","sources":["../../../src/client/auth/startLogin.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,EAAE;AACF,0EAA0E;AAC1E,+DAA+D;AAE/D,MAAM,YAAY,GAChB,OAAO,MAAM,KAAK,WAAW;IAC3B,CAAC,CAAC,CAAE,MAA4C,CAAC,gBAAgB;QAC/D,kBAAkB,CAAC;IACrB,CAAC,CAAC,kBAAkB,CAAC;AASzB
|
|
1
|
+
{"version":3,"file":"startLogin.js","sourceRoot":"","sources":["../../../src/client/auth/startLogin.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,EAAE;AACF,0EAA0E;AAC1E,+DAA+D;AAE/D,MAAM,YAAY,GAChB,OAAO,MAAM,KAAK,WAAW;IAC3B,CAAC,CAAC,CAAE,MAA4C,CAAC,gBAAgB;QAC/D,kBAAkB,CAAC;IACrB,CAAC,CAAC,kBAAkB,CAAC;AASzB,iFAAiF;AACjF,mFAAmF;AACnF,mFAAmF;AACnF,mFAAmF;AACnF,oFAAoF;AACpF,MAAM,aAAa,GAAG,gBAAgB,CAAC;AACvC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAC5C,MAAM,kBAAkB,GAAG,CAAC,GAAG,MAAM,CAAC;AAEtC,yDAAyD;AACzD,SAAS,qBAAqB;IAC5B,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,6EAA6E;IAC/E,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QACvB,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,qBAAqB;IACnC,IAAI,CAAC;QACH,IAAI,gBAAgB,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC;YAC9C,IAAI,EAAE,wBAAwB;SAC/B,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA0B,EAAE;IAC5D,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC1C,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,GAAG,YAAY,iBAAiB,MAAM,EAAE,CAAC;IAErD,iFAAiF;IACjF,gEAAgE;IAChE,IAAK,MAA4C,CAAC,mBAAmB,EAAE,CAAC;QACtE,qBAAqB,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,IAAI,IAAI,CAAC,UAAU;YAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;;YACvD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC,CAAC;IAEF,IAAI,IAAI,GAA4B,IAAI,CAAC;IACzC,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;YACD,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,gFAAgF;IAChF,KAAK,UAAU,OAAO,CAAC,KAAmB;QACxC,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY;YAAE,OAAO;QAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,IAA+C,CAAC;QACnE,IAAI,IAAI,EAAE,IAAI,KAAK,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QAC1D,OAAO,EAAE,CAAC;QACV,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE;gBACtC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1C,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,EAAE,CAAC;QACX,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,CAAC,CAAe,EAAQ,EAAE;YACzC,IACG,CAAC,CAAC,IAAiC,EAAE,IAAI,KAAK,wBAAwB,EACvE,CAAC;gBACD,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,CAAC;YACX,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,4EAA4E;IAC9E,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CACvB,GAAG,EACH,gBAAgB,EAChB,uCAAuC,CACxC,CAAC;IAEF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,mEAAmE;QACnE,OAAO,EAAE,CAAC;QACV,IAAI,CAAC;YACH,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;QACD,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,uEAAuE;IACvE,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAmD,EAAE;IAErD,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;QAC9B,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QACvB,MAAM,EACJ,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI;KAC3E,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI;QAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3E,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,YAAY,UAAU,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAGlC;IACC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC1B,OAAO,CACL,GAAG,CAAC,QAAQ,KAAK,QAAQ;QACzB,IAAI,KAAK,WAAW;QACpB,IAAI,KAAK,WAAW;QACpB,IAAI,KAAK,OAAO;QAChB,IAAI,KAAK,KAAK;QACd,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CACpC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAChD,8EAA8E;IAC9E,+EAA+E;IAC/E,2EAA2E;IAC3E,6EAA6E;IAC7E,+EAA+E;IAC/E,6EAA6E;IAC7E,gFAAgF;IAChF,qCAAqC;IACrC,IAAI,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,IAAI,CAAC;QACH,IAAI,cAAc,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/D,cAAc,CAAC,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,CAAC,+DAA+D;IAC/E,CAAC;IACD,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,kBAAkB,CAC5B,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CACzE,CAAC;IACF,MAAM,CAAC,QAAQ,CAAC,OAAO,CACrB,GAAG,YAAY,wBAAwB,MAAM,sBAAsB,GAAG,EAAE,CACzE,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC;QACH,cAAc,CAAC,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB;IACjC,IAAI,CAAC;QACH,cAAc,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IACE,OAAO,MAAM,KAAK,WAAW;QAC5B,MAA6C,CAAC,cAAc,EAC7D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAClD,OAAO,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrapApp.d.ts","sourceRoot":"","sources":["../../src/client/bootstrapApp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpE,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrapApp.d.ts","sourceRoot":"","sources":["../../src/client/bootstrapApp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpE,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAkBzE,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAmFlE,UAAU,mBAAmB;IAC3B,mFAAmF;IACnF,QAAQ,EAAE,eAAe,CAAC;IAE1B,mFAAmF;IACnF,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B,uDAAuD;IACvD,cAAc,EAAE,aAAa,CAAC;QAC5B,QAAQ,EAAE,SAAS,CAAC;QACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC;QAChC,6DAA6D;QAC7D,UAAU,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KACnD,CAAC,CAAC;IAEH,0EAA0E;IAC1E,MAAM,EAAE,MAAM,YAAY,CAAC;IAE3B,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAE5B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qFAAqF;IACrF,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAEhC,iFAAiF;IACjF,QAAQ,CAAC,EAAE,KAAK,CAAC;IAEjB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;qFACiF;IACjF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+MD,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAuY/D"}
|
|
@@ -7,7 +7,7 @@ import { AppProvider } from './AppProvider.js';
|
|
|
7
7
|
import { buildAppTree } from './appTree.js';
|
|
8
8
|
import { installSsrPageData, isSsrDocument } from './ssr.js';
|
|
9
9
|
import { MagicLinkCallback } from './auth/MagicLinkCallback.js';
|
|
10
|
-
import { attemptSilentSso, clearSilentSsoTried, markSilentSsoTried, } from './auth/startLogin.js';
|
|
10
|
+
import { attemptSilentSso, broadcastLoginSuccess, clearSilentSsoTried, consumeLoginPopupPending, markSilentSsoTried, } from './auth/startLogin.js';
|
|
11
11
|
import { createSocket } from './createSocket.js';
|
|
12
12
|
import { installInspect } from './inspect/index.js';
|
|
13
13
|
import { installMobileUxAudit } from './mobileUxAudit.js';
|
|
@@ -410,20 +410,39 @@ export function bootstrapApp(options) {
|
|
|
410
410
|
// Fall through to the normal bootstrap below (renders logged-in in place).
|
|
411
411
|
}
|
|
412
412
|
else {
|
|
413
|
-
// Logged-out → adopting a session.
|
|
414
|
-
//
|
|
415
|
-
//
|
|
413
|
+
// Logged-out → adopting a session. Redeem the code (sets the session cookie
|
|
414
|
+
// for this origin), then either:
|
|
415
|
+
// • we're the sign-in popup opened by startUglyBotLogin — a COI app's COOP:
|
|
416
|
+
// same-origin severed our `window.opener`, so we can't postMessage it.
|
|
417
|
+
// Signal it over a same-origin BroadcastChannel and close; the cookie is
|
|
418
|
+
// shared, so the opener reloads logged-in. (Without this, the app would
|
|
419
|
+
// just render INSIDE the popup and the opener would never know.)
|
|
420
|
+
// • a normal tab (magic-link / blocked popup): reload so the server
|
|
421
|
+
// re-renders the HTML with `__AUTH_TOKEN__` injected from the cookie.
|
|
422
|
+
// `replace` keeps the single-use code out of history so it can't be replayed.
|
|
423
|
+
const isLoginPopup = consumeLoginPopupPending();
|
|
416
424
|
void (async () => {
|
|
425
|
+
let ok = false;
|
|
417
426
|
try {
|
|
418
|
-
await fetch('/auth/verify', {
|
|
427
|
+
const res = await fetch('/auth/verify', {
|
|
419
428
|
method: 'POST',
|
|
420
429
|
headers: { 'Content-Type': 'application/json' },
|
|
421
430
|
body: JSON.stringify({ code: oauthCode }),
|
|
422
431
|
});
|
|
432
|
+
ok = res.ok;
|
|
423
433
|
}
|
|
424
434
|
catch {
|
|
425
435
|
// Fall through — the reload renders logged-out and the user can retry.
|
|
426
436
|
}
|
|
437
|
+
if (isLoginPopup && ok) {
|
|
438
|
+
// Only claim success once the cookie is actually set; then close.
|
|
439
|
+
broadcastLoginSuccess();
|
|
440
|
+
// No-op if this window isn't script-closable; the replace below is the
|
|
441
|
+
// fallback so the user still ends up logged in, not on a stuck popup.
|
|
442
|
+
window.close();
|
|
443
|
+
}
|
|
444
|
+
// Popup with a failed redeem, or a normal tab: reload in place (logged-in on
|
|
445
|
+
// success, logged-out on failure so the user can retry).
|
|
427
446
|
window.location.replace(cleanUrl);
|
|
428
447
|
})();
|
|
429
448
|
mount(_jsx(_Fragment, {}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrapApp.js","sourceRoot":"","sources":["../../src/client/bootstrapApp.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootstrapApp.js","sourceRoot":"","sources":["../../src/client/bootstrapApp.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ugly-app",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.888",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"comment:files": "Allowlist what ships to npm. dist = runtime; src = sourcemap targets (dist/*.js.map reference ../../src/); templates = CLI scaffold. Everything else at repo root (.pgdata local Postgres, coverage, assets/icons sources, test/, test-results/) is excluded by omission. The !negations strip the scaffold's installed deps + cruft (templates/node_modules is 200MB+ and must never ship). package.json/README/LICENSE ship automatically.",
|
|
6
6
|
"files": [
|
package/src/cli/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Auto-generated by prebuild — do not edit manually
|
|
2
|
-
export const CLI_VERSION = "0.1.
|
|
2
|
+
export const CLI_VERSION = "0.1.888";
|
|
@@ -20,33 +20,100 @@ export interface StartLoginOptions {
|
|
|
20
20
|
onError?: () => void;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
// Coordinates the cross-origin-isolated popup-login handoff. On a COI app, COOP:
|
|
24
|
+
// same-origin severs the popup's `window.opener`, so it can't postMessage the code
|
|
25
|
+
// back. Instead the popup redeems the code itself and signals the opener over this
|
|
26
|
+
// same-origin BroadcastChannel; the localStorage key (shared opener↔popup, both on
|
|
27
|
+
// this origin) tells bootstrap that the window holding the code IS the login popup.
|
|
28
|
+
const LOGIN_CHANNEL = 'ugly-bot-login';
|
|
29
|
+
const LOGIN_POPUP_KEY = 'uglyBotLoginPopup';
|
|
30
|
+
const LOGIN_POPUP_TTL_MS = 5 * 60_000;
|
|
31
|
+
|
|
32
|
+
/** Mark that a sign-in popup is in flight (COI path). */
|
|
33
|
+
function markLoginPopupPending(): void {
|
|
34
|
+
try {
|
|
35
|
+
localStorage.setItem(LOGIN_POPUP_KEY, String(Date.now()));
|
|
36
|
+
} catch {
|
|
37
|
+
/* private mode — degrades to rendering in the popup, no worse than before */
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* If a recent sign-in popup is in flight, clear the flag and return true. Called by
|
|
43
|
+
* bootstrap in the window that just redeemed the oauth code: true ⇒ this window IS
|
|
44
|
+
* the login popup (broadcast success + close); false ⇒ a normal tab (render here).
|
|
45
|
+
*/
|
|
46
|
+
export function consumeLoginPopupPending(): boolean {
|
|
47
|
+
try {
|
|
48
|
+
const raw = localStorage.getItem(LOGIN_POPUP_KEY);
|
|
49
|
+
if (!raw) return false;
|
|
50
|
+
localStorage.removeItem(LOGIN_POPUP_KEY);
|
|
51
|
+
return Date.now() - Number(raw) < LOGIN_POPUP_TTL_MS;
|
|
52
|
+
} catch {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** Signal a completed sign-in to the opener that launched the popup (same-origin). */
|
|
58
|
+
export function broadcastLoginSuccess(): void {
|
|
59
|
+
try {
|
|
60
|
+
new BroadcastChannel(LOGIN_CHANNEL).postMessage({
|
|
61
|
+
type: 'ugly-bot-login-success',
|
|
62
|
+
});
|
|
63
|
+
} catch {
|
|
64
|
+
/* no BroadcastChannel (old engine) */
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
23
68
|
/**
|
|
24
69
|
* Open the ugly.bot OAuth popup and complete login. On success, the session
|
|
25
70
|
* cookie is set via `/auth/verify` and the browser navigates to `redirectTo`
|
|
26
71
|
* (or reloads). If the popup is blocked, falls back to navigating to
|
|
27
72
|
* `redirectTo` (or `/`), where the framework's LoginPopup handles sign-in.
|
|
73
|
+
*
|
|
74
|
+
* Two completion paths:
|
|
75
|
+
* • Non-COI apps: `window.opener` survives → the popup postMessages the code here.
|
|
76
|
+
* • COI apps: COOP: same-origin severs `window.opener`, so ugly.bot can't reach us
|
|
77
|
+
* and instead redirects the popup back to this origin with `?ugly_oauth_code=`.
|
|
78
|
+
* The popup's bootstrap redeems it and broadcasts success over BroadcastChannel;
|
|
79
|
+
* we reload (the session cookie is shared same-origin). `markLoginPopupPending`
|
|
80
|
+
* tags the popup so bootstrap closes it instead of rendering the app inside it.
|
|
28
81
|
*/
|
|
29
82
|
export function startUglyBotLogin(opts: StartLoginOptions = {}): void {
|
|
30
83
|
if (typeof window === 'undefined') return;
|
|
31
84
|
const origin = encodeURIComponent(window.location.origin);
|
|
32
85
|
const url = `${UGLY_BOT_URL}/oauth?origin=${origin}`;
|
|
33
|
-
const popup = window.open(
|
|
34
|
-
url,
|
|
35
|
-
'ugly-bot-login',
|
|
36
|
-
'width=480,height=640,left=200,top=100',
|
|
37
|
-
);
|
|
38
86
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
87
|
+
// Only COI apps hit the severed-opener path; tagging non-COI would leave a stale
|
|
88
|
+
// flag that a later magic-link tab could wrongly self-close on.
|
|
89
|
+
if ((window as { crossOriginIsolated?: boolean }).crossOriginIsolated) {
|
|
90
|
+
markLoginPopupPending();
|
|
43
91
|
}
|
|
44
92
|
|
|
45
|
-
const
|
|
93
|
+
const finish = (): void => {
|
|
94
|
+
if (opts.redirectTo) window.location.href = opts.redirectTo;
|
|
95
|
+
else window.location.reload();
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
let chan: BroadcastChannel | null = null;
|
|
99
|
+
const cleanup = (): void => {
|
|
100
|
+
window.removeEventListener('message', handler);
|
|
101
|
+
if (chan) {
|
|
102
|
+
try {
|
|
103
|
+
chan.close();
|
|
104
|
+
} catch {
|
|
105
|
+
/* ignore */
|
|
106
|
+
}
|
|
107
|
+
chan = null;
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// COI path: the popup redeems the code (bootstrap) and broadcasts success here.
|
|
112
|
+
async function handler(event: MessageEvent): Promise<void> {
|
|
46
113
|
if (event.origin !== UGLY_BOT_URL) return;
|
|
47
114
|
const data = event.data as { type?: string; code?: string } | null;
|
|
48
115
|
if (data?.type !== 'ugly-bot-oauth' || !data.code) return;
|
|
49
|
-
|
|
116
|
+
cleanup();
|
|
50
117
|
try {
|
|
51
118
|
const res = await fetch('/auth/verify', {
|
|
52
119
|
method: 'POST',
|
|
@@ -54,12 +121,45 @@ export function startUglyBotLogin(opts: StartLoginOptions = {}): void {
|
|
|
54
121
|
body: JSON.stringify({ code: data.code }),
|
|
55
122
|
});
|
|
56
123
|
if (!res.ok) throw new Error('Auth failed');
|
|
57
|
-
|
|
58
|
-
else window.location.reload();
|
|
124
|
+
finish();
|
|
59
125
|
} catch {
|
|
60
126
|
opts.onError?.();
|
|
61
127
|
}
|
|
62
|
-
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
try {
|
|
131
|
+
chan = new BroadcastChannel(LOGIN_CHANNEL);
|
|
132
|
+
chan.onmessage = (e: MessageEvent): void => {
|
|
133
|
+
if (
|
|
134
|
+
(e.data as { type?: string } | null)?.type === 'ugly-bot-login-success'
|
|
135
|
+
) {
|
|
136
|
+
cleanup();
|
|
137
|
+
finish();
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
} catch {
|
|
141
|
+
/* no BroadcastChannel — the opener.postMessage path still covers non-COI */
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
const popup = window.open(
|
|
145
|
+
url,
|
|
146
|
+
'ugly-bot-login',
|
|
147
|
+
'width=480,height=640,left=200,top=100',
|
|
148
|
+
);
|
|
149
|
+
|
|
150
|
+
if (!popup) {
|
|
151
|
+
// Popup blocked — degrade to the login screen on the target route.
|
|
152
|
+
cleanup();
|
|
153
|
+
try {
|
|
154
|
+
localStorage.removeItem(LOGIN_POPUP_KEY);
|
|
155
|
+
} catch {
|
|
156
|
+
/* ignore */
|
|
157
|
+
}
|
|
158
|
+
window.location.href = opts.redirectTo ?? '/';
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Non-COI path: opener intact → the popup postMessages the code to us.
|
|
63
163
|
window.addEventListener('message', handler);
|
|
64
164
|
}
|
|
65
165
|
|
|
@@ -10,7 +10,9 @@ import { installSsrPageData, isSsrDocument } from './ssr.js';
|
|
|
10
10
|
import { MagicLinkCallback } from './auth/MagicLinkCallback.js';
|
|
11
11
|
import {
|
|
12
12
|
attemptSilentSso,
|
|
13
|
+
broadcastLoginSuccess,
|
|
13
14
|
clearSilentSsoTried,
|
|
15
|
+
consumeLoginPopupPending,
|
|
14
16
|
markSilentSsoTried,
|
|
15
17
|
} from './auth/startLogin.js';
|
|
16
18
|
import { createSocket } from './createSocket.js';
|
|
@@ -493,19 +495,38 @@ export function bootstrapApp(options: BootstrapAppOptions): void {
|
|
|
493
495
|
})();
|
|
494
496
|
// Fall through to the normal bootstrap below (renders logged-in in place).
|
|
495
497
|
} else {
|
|
496
|
-
// Logged-out → adopting a session.
|
|
497
|
-
//
|
|
498
|
-
//
|
|
498
|
+
// Logged-out → adopting a session. Redeem the code (sets the session cookie
|
|
499
|
+
// for this origin), then either:
|
|
500
|
+
// • we're the sign-in popup opened by startUglyBotLogin — a COI app's COOP:
|
|
501
|
+
// same-origin severed our `window.opener`, so we can't postMessage it.
|
|
502
|
+
// Signal it over a same-origin BroadcastChannel and close; the cookie is
|
|
503
|
+
// shared, so the opener reloads logged-in. (Without this, the app would
|
|
504
|
+
// just render INSIDE the popup and the opener would never know.)
|
|
505
|
+
// • a normal tab (magic-link / blocked popup): reload so the server
|
|
506
|
+
// re-renders the HTML with `__AUTH_TOKEN__` injected from the cookie.
|
|
507
|
+
// `replace` keeps the single-use code out of history so it can't be replayed.
|
|
508
|
+
const isLoginPopup = consumeLoginPopupPending();
|
|
499
509
|
void (async () => {
|
|
510
|
+
let ok = false;
|
|
500
511
|
try {
|
|
501
|
-
await fetch('/auth/verify', {
|
|
512
|
+
const res = await fetch('/auth/verify', {
|
|
502
513
|
method: 'POST',
|
|
503
514
|
headers: { 'Content-Type': 'application/json' },
|
|
504
515
|
body: JSON.stringify({ code: oauthCode }),
|
|
505
516
|
});
|
|
517
|
+
ok = res.ok;
|
|
506
518
|
} catch {
|
|
507
519
|
// Fall through — the reload renders logged-out and the user can retry.
|
|
508
520
|
}
|
|
521
|
+
if (isLoginPopup && ok) {
|
|
522
|
+
// Only claim success once the cookie is actually set; then close.
|
|
523
|
+
broadcastLoginSuccess();
|
|
524
|
+
// No-op if this window isn't script-closable; the replace below is the
|
|
525
|
+
// fallback so the user still ends up logged in, not on a stuck popup.
|
|
526
|
+
window.close();
|
|
527
|
+
}
|
|
528
|
+
// Popup with a failed redeem, or a normal tab: reload in place (logged-in on
|
|
529
|
+
// success, logged-out on failure so the user can retry).
|
|
509
530
|
window.location.replace(cleanUrl);
|
|
510
531
|
})();
|
|
511
532
|
mount(<></>);
|